[英]Python: using map() without lambdas on a multidimensional array/list
我在python中有一些代碼,它在一個名為a的多維列表中的所有值按位或等於b
for 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)
map
, filter
和reduce
所有take函數(或至少callables - 即任何帶有__call__
方法的函數)作為參數。 所以基本上沒有。 您必須定義一個函數或類。
我完全沒有理由為什么人們應該避免使用lambdas或列表理解,但是這里有:
import operator,functools
a = map(functools.partial(map, functools.partial(operator.or_, b)), a)
不幸的是,Python沒有簡潔的currying語法,所以你不能做像map(b |, x)
這樣的東西。
我只想使用列表推導:
[y | b for x in a for y in x]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.