的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)
我看绝对没有理由人都不应避免lambda表达式或列表内涵,但这里有云:
import operator,functools
a = map(functools.partial(map, functools.partial(operator.or_, b)), a)
functools +1,这对我来说是新的。 – 2012-03-05 06:18:09
注意'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
map
,filter
写这个代码,和reduce
都采取功能(或至少马蹄莲布莱尔 - 即任何具有__call__
方法的东西)作为参数。所以基本上没有。你必须定义一个函数或一个类。
...或者,为了说明显而易见的,使用在别处定义的内置函数。 – senderle 2012-03-05 04:59:23
不幸的是Python有没有简洁钻营的语法,所以你不能这样做map(b |, x)
。
我只想用列表解析:
[y | b for x in a for y in x]
用的是什么情况下使用高阶函数映射,过滤器,减少无功能参数? – 2012-03-05 04:23:39