Reduce 不再是内置的

在 Python 2 中,reduce 可以作为内置函数使用,也可以从 functools 软件包(2.6 版本开始)获得,而在 Python 3 中,reduce 仅可从 functools 获得。但是,Python2 和 Python3 中 reduce 的语法是相同的,而且是 reduce(function_to_reduce, list_to_reduce)

例如,让我们考虑通过划分每个相邻数字将列表缩减为单个值。这里我们使用 truediv 函数从 operator 库。

在 Python 2.x 中,它很简单:

Python 2.x >= 2.3

>>> my_list = [1, 2, 3, 4, 5]
>>> import operator
>>> reduce(operator.truediv, my_list)
0.008333333333333333

在 Python 3.x 中,示例变得有点复杂:

Python 3.x >= 3.0

>>> my_list = [1, 2, 3, 4, 5]
>>> import operator, functools
>>> functools.reduce(operator.truediv, my_list)
0.008333333333333333

我们也可以使用 from functools import reduce 来避免使用命名空间名称调用 reduce