lambda表达式
如果一个函数有一个返回值,并且只有一句代码,可以使用lambda化简(简化代码量和内存开销)
lambda语法
lambda 参数列表:表达式
- lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用
- lambda表达式能接收任何数量的参数,但是只能返回一个表达式的值
# 一个函数只有一句代码且只有一个返回值
fn1 = lambda: 100 # lambda 匿名函数
print(fn1())
def Add(a, b):
return a + b
AddLambda = lambda a, b: a + b
print(Add(1, 2))
print(AddLambda(1, 2))
lambda的参数形式
无参数
一个参数
默认参数
fn1 = lambda a, b, c=100: a + b + c
print(fn1(10, 20))
可变参数 *args
fn1 = lambda *args: args
print(fn1(10,20)) # 返回一个数据元组
可变参数 **kwargs
fn1= lambda **kwargs: kwargs
print(fn1(name='python', age=20))
lambda 的应用
带判断的lambda
fn6 = lambda a, b: a if a > b else b
print(fn6(1000, 20))
列表数据按字典key的值排序
students = [
{'name': 'Tom', 'age': 20},
{'name': 'Aom', 'age': 23},
{'name': 'Kom', 'age': 21}
]
students.sort(key=lambda x: x['name'])
# students.sort(key=lambda x: x['age'], reverse=True) # 降序排序
print(students)