Python笔记|Python3中没有reduce函数的原因

432 阅读1分钟

原因

因为 Guido 先生讨厌 reduce。(Because Guido hates it. )

详细过程请翻阅原文:www.artima.com/forums/flat…

Guido大大原计划把 lambda, reduce 都干掉。

最后只干掉了 reduce

使用

首先在python3版本中,直接使用reduce()的话,系统会报错,提示不存在reduce()函数。

>>> arr = [1, 2, 3, 4, 5]
>>> reduce(lambda x, y : x+y, arr)
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    reduce(lambda x, j : x+y, arr)
NameError: name 'reduce' is not defined

在Python 3里,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在fucntools 模块里

使用前需要先引用

>>> from functools import reduce
>>> arr = [1, 2, 3, 4, 5]
>>> reduce(lambda x, y : x+y, arr)
15

我的个人博客