我使用的是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中真的被删除了吗?如果是这样的话,另一种选择是什么?


当前回答

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

其他回答

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

或者如果你使用六牌库

from six.moves import reduce

你可以添加

from functools import reduce

在你使用减法之前。

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

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

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

它被移到了functools中。