Python reduce()函数的用法详解

今天刷题时又见识到了大佬精简的代码,所以特地学习了一下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()使代码看起来更精简,而且运行性能更好,更准确。

参考文献

  • 13
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值