functools.reduce 详解
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 函数。