Python reduce()函数的用法详解

本文介绍了Python的reduce()函数,包括其语法和工作原理。reduce结合一个函数和序列,返回一个单一的值,通过不断将函数应用于序列的连续元素。在Python3中,reduce()位于functools模块。文章还提到了reduce()处理单个元素序列的情况,并指出虽然可以使用for loop代替,但reduce()使代码更简洁高效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天刷题时又见识到了大佬精简的代码,所以特地学习了一下reduce的用法,在此记录。

reduce的语法格式

reduce(function, sequence[, initial]) -> value
reduce函数接受一个function和一串sequence,并返回单一的值,以如下方式计算:
1.初始,function被调用,并传入sequence的前两个items,计算得到result并返回
2.function继续被调用,并传入上一步中的result,和sequence种下一个item,计算得到result并返回。一直重复这个操作,直到sequence都被遍历完,返回最终结果。

注意1. 当initial值被指定时,传入step1中的两个参数分别是initial值和sequence的第一个items。reduce()最多只能接受三个参数,func,sequence,initial。
注意2. 在python2中reduce时内置函数,但是在python3中,它被移到functools模块,因此使用之前需要导入,如

>>> from  functools import reduce 
>>>a=[1, 2, 2, 1, 3, 3, 4, 1]
>>> reduce(lambda x,y:x+y ,a)  #实现加法功能
17
>>>reduce(lambda x,y:x+y ,a,2)#指定initial值
19

那么如果一开始sequence只有一个元素,并且没有设定initial,会不会报错呢?

>>> reduce(lambda x,y:x+y ,[2])
2
>>> reduce(lambda x,y:x*y ,[2])
2
'''
可以发现并没有报错,但也不能判断是传入了具体什么值
第一个例子中好像传入的是0,但第二个例子又好像是1
'''

所以只需要记住只有一个参数的时候reduce()函数会返回它本身

总结

我们可能会发现这些功能,都可以用for loop来替代,但是reduce()使代码看起来更精简,而且运行性能更好,更准确。

参考文献

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值