reduce解释:reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,
代码:
>>> from functools import reduce
>>> def add(x, y):
... return x + y
...
>>> reduce(add, [1, 2,3])#结果为6
>>> reduce(add, [1])#结果为1
疑问:要求是两个参数,参数x和参数y是什么, reduce(add, [1]),这种情况我都搞不明白这个reduce是怎么工作的
reduce大致相当于:
单就你这个add来说,可以这么理解,
add必须接受2个参数,对序列l而言有reduce(add,l),看这句话"结果继续和序列的下一个元素做累积计算",第一个结果是add(l[0],l[1]),l的下一个元素是l[2],因而下一步就是add(add(l[0],l[1]),l[2]),这么看应该理解了吧,x,y就是序列的元素。
而reduce(add,[1]),看代码,当取出第一元素后,value=1,it已经空了,因此最后return的value值为1