问题:NameError:名称“ reduce”未在Python中定义
我正在使用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中真正删除的吗?如果是这样,还有什么选择?
回答 0
它已移至functools
。
回答 1
你可以加
from functools import reduce
在使用reduce之前。
回答 2
或者如果您使用六个库
from six.moves import reduce
回答 3
在这种情况下,我认为以下内容是等效的:
l = sum([1,2,3,4]) % 2
唯一的问题是它会产生大量数字,但这也许比重复的模运算更好?