名称错误:名称';减少';未在Python中定义
我正在使用Python 3.2。我试过这个:名称错误:名称';减少';未在Python中定义,python,reduce,python-3.2,Python,Reduce,Python 3.2,我正在使用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 Python 3.2中是否真的删除了reduce?如果
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
Python 3.2中是否真的删除了
reduce
?如果是这样的话,还有什么选择呢?它被移动到了。在这种情况下,我认为以下是等效的:
l = sum([1,2,3,4]) % 2
唯一的问题是它会产生大量的数字,但这可能比重复的模运算要好。您可以添加
from functools import reduce
使用reduce.或使用six库之前
from six.moves import reduce
您需要从
functools
python包安装并导入reduce@JBernardo,什么是正确的工具?@julio.alegria:Because.@IgnacioVazquez Abrams中引用的文章就如何以更可读的方式编写大多数案例提出了一些非常好的观点。对我来说,这是通过写sum(dicts列表中项的项['key'])
。这应该是核心语言。前面的用户已经回答了这个问题,答案与他的答案相同。重复模运算有助于保持数字较小。除非你对很多数字求和,否则求和不会产生大的数字,所以在这种情况下是没有帮助的。特别是因为不这样做允许使用内置的sum函数,这将比用户定义函数的重复应用运行得快得多