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}]