reduce函数是Python内置函数
引用:from functools import reduce
函数语法: reduce(function, iterable[,initializer])
函数参数含义如下:
1、function 需要带两个参数,1个是用于保存操作的结果,另一个是每次迭代的元素。
2、iterable 待迭代处理的集合
3、initializer 初始值,可以没有。
reduce函数的运作过程是,当调用reduce方法时:
1、如果存在initializer参数,会先从iterable中取出第一个元素值,然后initializer和元素值会传给function处理;
接着再从iterable中取出第二个元素值,与function函数的返回值 再一起传给function处理,以此迭代处理完所有元素。最后一次处理的function返回值就是reduce函数的返回值。
2、如果不存在initializer参数,会先从iterable中取出第一个元素值作为initializer值,然后以此从iterable取第二个元素及以后的元素进行处理。特殊情况下,如果集合只有一个元素,则无论function如何处理,reduce返回的都是第一个元素的值。
例题:
求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
from functools import reduce
Tn=0
Sn=[]
n=int(input('n= '))
a=int(input('a= '))
for count in range(n):
Tn+=a
a*=10
Sn.append(Tn)
print(Tn)
Sn=reduce(lambda x,y:x+y,Sn)
print('计算和为:%d'%Sn)
reduce(lambda x,y:x+y,Sn)
lambda函数前面介绍过,
依次取出Sn的值,第一轮先取出第一个值赋予x,然后取出第二个值赋予y,得到的答案赋予x;
第二轮x是上一轮的结果值,取出Sn的第三个值赋予y;
以此类推。。。