概述

# No import needed

# No import required...
from functools import reduce # ... but it can be loaded from the functools module

from functools import reduce # mandatory

reduce 通过对 iterable 的下一个元素和累积结果重复应用函数来减少迭代。

def add(s1, s2):
    return s1 + s2

asequence = [1, 2, 3]

reduce(add, asequence)  # equivalent to: add(add(1,2),3)
# Out: 6

在这个例子中,我们定义了自己的 add 函数。但是,Python 在 operator 模块中提供了标准的等效函数:

import operator
reduce(operator.add, asequence)
# Out: 6

reduce 也可以传递一个起始值:

reduce(add, asequence, 10)
# Out: 16