作用:如果一个函数有⼀个返回值,并且只有一句代码,可以使用 lambda简化。
lambda 参数列表 : 表达式
# lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用。
# lambda函数能接收任何数量的参数但只能返回一个表达式的值
示例:lambda简化define函数
# 使用def定义一个函数
def add(a,b):
return a+b
print(add(1,5))
#使用lambda简化函数
f = lambda a, b: a + b
print(f(1, 5))
、
#当然可以更简便的方法,直接将参数传入,更简易的显示了代码的紧凑性
print((lambda a, b: a + b)(1,2))
lambda的参数形式
1.无参数
print((lambda: 100)())
2.一个参数
print((lambda a: a)('Hello Python'))
3.默认参数/缺省参数
# c为默认参数/缺省函数,没有传入实参则使用默认值
print((lambda a, b, c=100: a + b + c)(10, 20))
# 传入实参则替换掉默认参数
print((lambda a, b, c=100: a + b + c)(10, 20, 30))
4.可变参数:**args
print((lambda *args: args)(10, 20, 30))
# 这⾥的可变参数传⼊到lambda之后,返回值为元组。
5.可变参数:**kwargs
print((lambda **kwargs: kwargs)(name='python', age=20))
# 这⾥的可变参数传⼊到lambda之后,返回值为字典。
lambda的应⽤
1.带判断的lambda
# 在lambda中使用三元运算符来判断值的大小
print((lambda a, b: a if a > b else b)(20, 10))
2.列表数据按字典key的值排序
students = [
{'name': 'zhang', 'age': 20},
{'name': 'lisi', 'age': 18},
{'name': 'wang', 'age': 15}]
# 按照name 升序排序
students.sort(key=lambda i: i['name'])
print(students)
# 按照age降序排序 ,比上面的多加了个reverse(反转)的意思
students.sort(key=lambda i: i['age'], reverse=True)
print(students)