按位使用lambda在python中使用列表的元素

use*_*692 2 python python-2.7

我可以通过这种方式使用lambda函数按位或者列表中的所有元素吗?

lst = [1, 1, 1]
f = lambda x: x | b for b in lst
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我会得到一个SyntaxError.

tza*_*man 10

你想要reduce:

f = reduce(lambda x, y: x | y, lst)
Run Code Online (Sandbox Code Playgroud)

reduce接受二元函数和迭代函数,并在从第一对开始的所有元素之间应用运算符.注意:在Python 3中它移动到functools模块.

您也可以使用模块中的or_函数operator而不是自己编写lambda:

from operator import or_
f = reduce(or_, lst)
Run Code Online (Sandbox Code Playgroud)