【Python 】reduce()函数介绍与使用

reduce

reduce函数介绍

reduce函数是通过函数对迭代器对象中的元素进行遍历操作(这一点和 map/filter 函数的原理很相似),但需要注意的是 reduce 函数返回的是计算的结果,而 map/filter 返回的是作用后的迭代器对象
Python3.x中reduce函数已经从内置函数中取消了,转而放在functools模块中,调用reduce函数的话需要先从functools模块中导入;如下:

from functools import reduce
  • 语法:
reduce(function,sequence[,initial])
#function---必须是有两个参数的函数。function是必需参数
#sequence---元组、列表、字典等可迭代对象均可。是必需参数
#initial---设置初始值,是可选参数
  • reduce的函数过程:
    无initial初始值时:在接受到function和sequence两必需参数后,reduce函数将sequence中的第一个、第二个元素作为function的实参传递给function,function执行后的结果和sequence中的第三个元素作为新一次function的实参继续直行。以此类推sequence中的元素遍历完之后function得到的结果为reduce函数的返回值。
>>>from functools import reduce
>>>list_a=[1,2,3,4,5]
>>>n=reduce(lambda x,y:x+y ,list_a)
>>>print(n)
#运行结果为
15
[Finished in 0.3s]
  • reduce的函数过程:
    有initial初始值时:在接收到function和sequence必需参数和initial可选参数后,reduce将初始值initial和sequence中的第一个元素作为实参传递给function,function执行后的结果和sequence的第二个参数作为新一次function的实参继续执行,一次类推sequence中元素遍历完之后function得到的结果作为reduce函数的返回值。
from functools import reduce
list_a=[1,2,3,4,5]
n=reduce(lambda x,y:x+y ,list_a,10)   #设置initial初值为10
print(n)
#运行结果为
25
[Finished in 0.3s]
  • reduce的参数
    函数reduce最多只能接受三个参数,即除去两个必需参数之外,可选参数initial只能指定一个,否则会抛出异常。
>>>from functools import reduce
>>>n=reduce(lambda x,y:x*y,[1,2,3,4,5]6)
>>>print(n)
#运行结果为
720
[Finished in 0.4s]
>>>from functools import reduce
>>>n=reduce(lambda x,y:x*y,[1,2,3,4,5],6,7)
>>>print(n)
#此时参数超出上限,会抛出异常
Traceback (most recent call last):
  File "C:\Users\asus\Desktop\py-script", line 2, in <module>
    n=reduce(lambda x,y:x*y,[1,2,3,4,5],6,7)
TypeError: reduce expected at most 3 arguments, got 4
[Finished in 0.8s]

reduce函数的应用

1.reduce的普通应用,直接调用Python内置函数或者用户自定义的函数。

from functools import reduce    
def add(x,y):
	return x+y
list_a=[1,2,3,4,5]
n=reduce(add ,list_a,)     #调用用户自定义的函数(也可直接调用Python的内置函数)
print(n)
#执行结果
15
[Finished in 0.2s]

2.reduce结合匿名函数lambda

>>>from functools import reduce
>>>list_a=[1,2,3,4,5]
>>>n=reduce(lambda x,y:x*y ,list_a,)
>>>print(n)
#运行结果为
120
[Finished in 0.2s]

reduce结合lambda可以很容易实现累加、累乘等,相较于for循环,此种实现方法更简洁代码可读性更强,符合Python的简洁特性。
3.reduce函数可以通过初值initial和其他筛选条件实现数据过滤等

猜你喜欢

Python map()函数
Python lambda表达式
Python zip() 、zip() 与zip()函数
Python 常用内置函数

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值