我在python中有一些代码,它在一个名为
的多维列表中的所有值上按位或等于bfor i in xrange(len(a)):
for j in xrange(len(a[i])):
a[i][j] |= b
我的问题是,有没有办法只使用(map(),filter(),reduce())来编写这段代码,而不必使用lambdas或任何其他函数定义,如下例所示
map(lambda x: map(lambda y: y | b, x), a)
答案 0 :(得分:4)
map
,filter
和reduce
都将函数(或至少是callables - 即任何带有__call__
方法的函数)作为参数。所以基本上没有。您必须定义一个函数或类。
答案 1 :(得分:4)
我完全没有理由为什么人们应该避免使用lambdas或列表理解,但是这里有:
import operator,functools
a = map(functools.partial(map, functools.partial(operator.or_, b)), a)
答案 2 :(得分:0)
不幸的是,Python没有简洁的语法,所以你不能做map(b |, x)
之类的事情。
我只想使用列表推导:
[y | b for x in a for y in x]