reduce 函数的作用是将序列的前两个元素与给定的函数联合使用,并将它们的返回值和下一个元素继续联合使用,直到整个序列处理完毕,并最终得到一个结果。在2.7版本之前,是内建函数,可以直接用,但新版本中,它变成了functools模块中的一个函数,所以,在使用时,首先需要导入,即加入import functools 或from functools import reduce,然后用代码functools.reduce 或reduce使用。
例:构想一个预测3D彩票号码的算法:给出一系列中奖号码,即一个中奖号码的序列,给定的函数的作用是将前两个中奖号码按位相加,其和与10取余,得到一个新号码,再与下一个号码一起继续联合,直至这一系列号码处理完成,最终得到一个新号码。
>>> lottery3D=[(0,3,7),(5,6,0),(0,8,7),(4,9,9),(3,9,5),(4,4,6),(6,9,9),(7,6,0),(3,1,9),(4,4,1)] #福彩3D号码
>>> def lfunc(x,y): #按位相加取余的函数
revlist=[]
for i in range(3):
revlist.append((x[i]+y[i])%10)
return tuple(revlist)
>>> from functools import reduce #从functools导入reduce
>>> sample=reduce(lfunc,lottery3D )#使用reduce得出一个新号码
>>> sample
(6, 9, 3)
>>>
ok!!!!