我使用的是Python 3.2。尝试:

xor = lambda x,y: (x+y)%2
l = reduce(xor, [1,2,3,4])

并得到以下错误:

l = reduce(xor, [1,2,3,4])
NameError: name 'reduce' is not defined

尝试将reduce打印到交互式控制台-得到这个错误:

NameError: name 'reduce' is not defined

reduce在Python 3.2中真的被删除了吗?如果是这样的话,另一种选择是什么?


当前回答

你可以添加

from functools import reduce

在你使用减法之前。

其他回答

Reduce函数在Python内置函数中没有定义。 首先,你应该导入reduce函数

from functools import reduce

或者如果你使用六牌库

from six.moves import reduce

你可以添加

from functools import reduce

在你使用减法之前。

你需要从functools python包中安装并导入reduce

在这种情况下,我认为以下是等价的:

l = sum([1,2,3,4]) % 2

唯一的问题是它会产生很大的数,但也许这比重复的模运算好?