的Python:使用地图(),而不lambda表达式多维数组/列表上

问题描述:

我在python一些代码,即按位或-等于b键中的所有值的多维列表称为的Python:使用地图(),而不lambda表达式多维数组/列表上

for i in xrange(len(a)): 
    for j in xrange(len(a[i])): 
     a[i][j] |= b 

我的问题是,是否有任何方式仅使用(地图(),过滤器(),减少()),而无需在该示例中使用的lambda或任何其他函数的定义如下面

map(lambda x: map(lambda y: y | b, x), a) 
+2

用的是什么情况下使用高阶函数映射,过滤器,减少无功能参数? – 2012-03-05 04:23:39

我看绝对没有理由人都不应避免lambda表达式或列表内涵,但这里有云:

import operator,functools 
a = map(functools.partial(map, functools.partial(operator.or_, b)), a) 
+1

functools +1,这对我来说是新的。 – 2012-03-05 06:18:09

+0

注意'functools.partial'类似于'lambda',所以恕我直言,正确答案是*不,你不能*,如@senderle已经写:http://stackoverflow.com/a/9561602/1763602。关于'functools.partial'和'lambda':http://stackoverflow.com/a/3252425/1763602 – 2016-02-24 10:39:59

mapfilter写这个代码,和reduce都采取功能(或至少马蹄莲布莱尔 - 即任何具有__call__方法的东西)作为参数。所以基本上没有。你必须定义一个函数或一个类。

+0

...或者,为了说明显而易见的,使用在别处定义的内置函数。 – senderle 2012-03-05 04:59:23

不幸的是Python有没有简洁钻营的语法,所以你不能这样做map(b |, x)

我只想用列表解析:

[y | b for x in a for y in x]