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