python 3.0以后, reduce已经不在built-in function里了, 要用它就得from functools import reduce.

reduce函数即为化简,它是这样一个过程:每次迭代,将上一次的迭代结果(第一次时为init的元素,如没有init则为seq的第一个元素)与下一个元素一同执行一个二元的func函数。在reduce函数中,init是可选的,如果使用,则作为第一次迭代的第一个元素使用。


In [ ]:
格式reduce( func, seq[, init] )

简单来说,可以用这样一个形象化的式子来说明:


In [ ]:
reduce( func, [1, 2, 3] ) = func( func(1, 2), 3)

下面是reduce函数的工作过程图:

举个例子来说,阶乘是一个常见的数学方法,Python中并没有给出一个阶乘的内建函数,我们可以使用reduce实现一个阶乘的代码。


In [3]:
from functools import reduce
n = 5
print('{}'reduce(lambda x, y: x * y, range(1, n + 1))) # 1 * 2 * 3 * 4 * 5


120