Python:在多维数组/列表上使用不带lambdas的map()

Python: using map() without lambdas on a multidimensional array/list

我在python中有一些代码,它在一个名为a的多维列表中的所有值按位或等于b

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

我的问题是,是否有任何方法只使用(map(),filter(),reduce())编写此代码,而不必使用lambdas或任何其他函数定义,如下例所示

1
map(lambda x: map(lambda y: y | b, x), a)


我完全没有理由为什么人们应该避免使用lambdas或列表理解,但是这里有:

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


mapfilterreduce都将函数(或至少可调用的函数 - 即任何带有__call__方法的函数)作为参数。 所以基本上没有。 您必须定义一个函数或类。


不幸的是,Python没有简洁的currying语法,所以你不能做像map(b |, x)这样的事情。

我只想使用列表推导:

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