1、lambda初体验
lambda其实是一个匿名函数,其使用的语法形式为 lambda 参数列表:表达式(返回值),其主要作用是减少代码量。
func1=lambda a,b:a*b
print(func1) #<function <lambda> at 0x000001BA03FF5598> 可以看出匿名函数
print(func1(10,10)) #100
# 直接调用
print((lambda x: 'big' if x > 100 else 'small')(10)) # small
2、lambda的参数形式
其实可以想到lambda作为一个匿名函数,其参数的形式应该和正常的函数没有什么两样。如下:
func1=lambda :100 #无参数形式
print(func1()) #100
func2=lambda a,b:a**b #一般参数形式
print(func2(2,3)) #8
func3=lambda a,b,c=100:a**b+c #默认参数形式
print(func3(2,3)) #108
func4=lambda *args:args #可变参数
print(func4(100,'abc','009')) #(100, 'abc', '009')
func5=lambda **kwargs:kwargs #可变参数
print(func5(name='tom',age=18)) #{'name': 'tom', 'age': 18}
3、lambda的应用
带判断表达式的lambda:
func=lambda a,b:(a+b) if a>b else (a-b)
print(func(2,3)) #-1
- 在列表排序方法sort的参数中直接调用lambda可以极大的减少代码量:
student=[{'name':'Tom','age':18,'class':'001'},
{'name':'Jack','age':20,'class':'003'},
{'name':'Lucy','age':24,'class':'009'}]
key=lambda x:x['name']
print(key(student[1])) #Jack这里只是为了看清楚下面sort的参数是什么
student.sort(key=lambda x:x['name']) #这里x指代的就是student列表中的每一项,返回值是每一项字典中的name
print(student)
#[{'name': 'Jack', 'age': 20, 'class': '003'}, {'name': 'Lucy', 'age': 24, 'class': '009'}, {'name': 'Tom', 'age': 18, 'class': '001'}]
student.sort(key=lambda x:x['name'],reverse=True)
print(student)
#[{'name': 'Tom', 'age': 18, 'class': '001'}, {'name': 'Lucy', 'age': 24, 'class': '009'}, {'name': 'Jack', 'age': 20, 'class': '003'}]
student.sort(key=lambda x:x['age'])
print(student)
#[{'name': 'Tom', 'age': 18, 'class': '001'}, {'name': 'Jack', 'age': 20, 'class': '003'}, {'name': 'Lucy', 'age': 24, 'class': '009'}]