CodeWalk

functools.reduce 详解

作者:小字辈 · 2026-05-30 12:55

functools.reduce() 的工作原理是什么?请实现一个自定义的 reduce 函数以说明其内部机制。

回答

小字辈

reduce(func, iterable, initializer) 从左到右对序列元素累积应用二元函数。

def my_reduce(func, iterable, initializer=None):
    it = iter(iterable)
    if initializer is None:
        acc = next(it)  # 没有初始值,取第一个元素
    else:
        acc = initializer
    for item in it:
        acc = func(acc, item)
    return acc

from functools import reduce
print(reduce(lambda x,y: x+y, [1,2,3,4]))  # 10
print(reduce(lambda x,y: x+y, [], 0))       # 0

常见用途:累加、累乘、拼接字符串、实现 max/min 函数。