python reduce
函数将一个序列按照制定的规则计算,归纳为一个输出。
map 可以看作是把一个序列根据某种规则,映射到另一个序列。reduce 做的事情就是把一个序列根据某种规则,归纳为一个输出。
求1累加到100的和。寻常的做法大概是这样:
sum = 0
for i in xrange(1, 101):
sum += i
print sum
如果用 reduce 函数,就可以写成:
lst = xrange(1, 101)
def add(x, y):
return x + y
print reduce(add, lst)
可以用 lambda 函数:
reduce((lambda x, y: x + y), xrange(1, 101))
解释一下:
reduce(function, iterable[, initializer])
第一个参数是作用在序列上的方法,第二个参数是被作用的序列,这与map
一致。另外有一个可选参数,是初始值。 function 需要是一个接收2个参数,并有返回值的函数。它会从序列iterable
里从左到右依次取出元素,进行计算。每次计算的结果,会作为下次计算的第一个参数。 提供初始值initializer
时,它会作为第一次计算的第一个参数。否则,就先计算序列中的前两个值。
顺便说句,Python3 里,reduce
已经被移出内置函数,使用 reduce 需要先通过 from functools import reduce
引入。