我使用的是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中。


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

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

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


你可以添加

from functools import reduce

在你使用减法之前。


或者如果你使用六牌库

from six.moves import reduce

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


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

from functools import reduce

像这样使用它。

# Use reduce function

from functools import reduce

def reduce_func(n1, n2):

    return n1 + n2


data_list = [2, 7, 9, 21, 33]

x = reduce(reduce_func, data_list)

print(x)