python中reduce是什么意思_python-reduce函数
0.摘要
本⽂主要介绍functool模块中的reduce函数,并使⽤reduce实现阶乘等操作。
茂密近义词
形容高的词语1.reduce函数
官⽅释义:Apply a function of two arguments cumulatively to the items of a quence,from left to right, so as to reduce the quence to a single value.
For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates ((((1+2)+3)+4)+5). If initial is prent, it is placed before the items of the quence in the calculation, and rves as a default when the quence is empty.
功能:可应⽤在这样的场景,利⽤⼀个有两个参数的函数,把⼀个序列中的项从左到右累积起来,以便把⼀个序列压缩为⼀个数
曹熏铉例如:reduce(lambda x,y:x+y,[1,2,3,4,5])计算了((((1 + 2)+(3)+ 4)+ 5)。如果初始值存在,那么在计算之前,它被放在所有项的前⾯。如果序列为空,它就作为默认值。
参数说明:
function:必选参数。需要有两个参数,并带有返回值
quence:必选参数,但可以为空。列表,存放带计算的数据。如果为空,必须指定initial;如果不为空,允许存放[1,∞)个数。
initial:可选参数。如果指定,则作为第⼀个被使⽤的参数,相当于添加到quence。如果quence为空,则将initial设为默认的返回值(注意,空的意思是[],⽽不是None)。
⽐如:def fun1(x,y):
return x + y
print(reduce(fun1,[],1))
由于quence为空,所以print的值是initial的值,1。
另外:reduce函数仅⽀持位置实参,不⽀持关键字实参
所以,reduce(function=fun1,quence=[1,2,3])这样的写法,会导致程序报错:
TypeError: reduce() takes no keyword arguments
红鲤鱼绕口令2.程序⽰例
使⽤reduce函数实现阶乘:from functools import reduce
木雕def fun1(x,y):
return x*y
说文解字注def factorial1(n):
quence = range(1,n+1)
result = reduce(fun1,quence,1)
return result
if __name__ == "__main__":
协议书范文for i in range(10):
print(factorial1(i))
此处,添加initial是考虑到0!=1的情况。
当然,我们可以借助lambda函数使得程序更简单:from functools import reduce def factorial2(n):
我寂寞寂寞就好result = reduce(lambda x,y:x*y, range(1,n+1),1)
return result
if __name__ == "__main__":
for i in range(10):
print(factorial2(i))
lambda表达式使⽤⽅法请移步: