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
。