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
。