Reduce函数接受的参数与map()类似,一个函数,一个列表,但行为与map不一样,reduce()传入的函数f必须接受两个参数,reduce()对列表中的每个元素反复调用函数f,并返回最终的结果值。
例如,编写一个函数,接受x和y,返回x和y的和:
>>> def f(x,y):
... return x+y
...
>>> reduce(f,[1,3,5,7,9])
25
执行过程如下:
先计算头两个元素:f(1,3), 结果为4;
再把结果和第3个元素计算:f(4, 5),结果为9;
再把结果和第4个元素计算:f(9, 7),结果为16;
再把结果和第5个元素计算:f(16, 9),结果为25;
由于没有更多的元素了,计算结束,返回结果25。
除此之外reduce还可以接受第3个参数,作为计算的初始值,例如将初始值设置为100,计算
>>> reduce(f,[1,3,5,7,9], 100)
125