Python学习笔记:lambda

lambda 定义了一个匿名函数
lambda 并不会带来程序运行效率的提高,只会使代码更简洁。
如果可以使用for...in...if来完成的,坚决不用lambda。
如果使用lambda,lambda内不要包含循环,如果有,我宁愿定义函数来完成,使代码获得可重用性和更好的可读性。
lambda 是为了减少单行函数的定义而存在的。

g=lambda x:x+1
print(g(1))

输出结果为:2

lambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体,用函数来表示为

def g(x):
    return x+1
print(g(1))

输出结果为2

在对象遍历处理方面,其实Python的for..in..if语法已经很强大,并且在易读上胜过了lambda。
lambda的使用大量简化了代码,使代码简练清晰;但是这会在一定程度上降低代码的可读性。

-------------------------------------------------------------在sorted()函数中的应用-----------------------------------------------------

sorted 的应用,也可以通过 key 的值来进行数组/字典的排序,比如:

array = [{"age":20,"name":"a"},{"age":25,"name":"b"},{"age":10,"name":"c"}]
array = sorted(array,key=lambda x:x["age"])
print(array)

输出结果为:

[{'age': 10, 'name': 'c'}, {'age': 20, 'name': 'a'}, {'age': 25, 'name': 'b'}]

若列表中的元素为列表或元组,则

array = [[20,'a'],[15,'b'],[25,'c']]
array = sorted(array,key=lambda x:x[0])#根据列表内部元素列表的第一个元素排序;第二个则是x[1]
print(array)

输出结果为:

[[15, 'b'], [20, 'a'], [25, 'c']]

 元组同上。

多列排序

先按照成绩降序排序,相同成绩的按照名字升序排序:

d1 = [{'name':'alice', 'score':38}, {'name':'bob', 'score':18}, {'name':'darl','score':28},{'name':'christ', 'score':28}]
l = sorted(d1, key=lambda x:(-x['score'], x['name']))
print(l)

输出结果:

[{'name': 'alice', 'score': 38}, {'name': 'christ', 'score': 28}, {'name': 'darl', 'score': 28}, {'name': 'bob', 'score': 18}]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值