python函数2:reduce( )和lambda

本文详细介绍了Python中的reduce()函数,它用于对序列元素进行累积操作,通过传入的函数对序列元素两两进行计算,最终得到单一结果。同时,文章也探讨了lambda函数的使用,这是一种简洁的匿名函数形式,常用于短小的、临时性的函数定义。结合示例代码,展示了如何利用lambda函数进行字符串长度排序。

reduce函数 :
reduce() 函数会对参数序列中元素进行累积。函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
reduce()的函数原型是:
reduce(function(), iterable, initializer),返回值是一个单值

reduce有 三个参数:

fuction有两个参数的函数, 必需参数
sequencetuple ,list ,dictionary, string等可迭代物,必需参数
initial初始值, 可选参数

reduce的工作过程是 :在迭代sequence(tuple ,list ,dictionary, string等可迭代物)的过程中,首先把 前两个元素传给 函数参数,函数加工后,然后把得到的结果和第三个元素作为两个参数传给函数参数, 函数加工后得到的结果又和第四个元素作为两个参数传给函数参数,依次类推。 如果传入了 initial 值, 那么首先传的就不是 sequence 的第一个和第二个元素,而是 initial值和 第一个元素。经过这样的累计计算之后合并序列到一个单一返回值

>>> from functools import reduce
>>> reduce(lambda x, y: x * 10 + y, [1 , 2, 3, 4, 5])
12345
>>>
 1 from functools import reduce
 2 scientists =({'name':'Alan Turing', 'age':105},
 3              {'name':'Dennis Ritchie', 'age':76},
 4              {'name':'Ada Lovelace', 'age':202},
 5              {'name':'Frances E. Allen', 'age':84})
 6 def reducer(accumulator , value):
 7     sum = accumulator + value['age']
 8     return sum
 9 total_age = reduce(reducer, scientists, 0)
10 print(total_age)

lambda函数 :
lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。 lambda函数之所以会被称为匿名函数,与def声明的函数不同,原因之⼀就是这种函数对象本身是没有提供名称name属性。
表达式 = lambda [parameters,即参数] : [func,即执行的运算过程]

假设有⼀组字符串,你想要根据各字符串不同字⺟的数量对其进⾏排序,其中函数用lambda函数来执行
示例代码:

strings = ['foo', 'card', 'bar', 'aaaa', 'abab']
strings.sort(key=lambda x:len(set(list(x)))
print(strings)

执行结果:

['aaaa', 'foo', 'abab', 'bar', 'card']
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值