一、lambda应用场景
如果一个函数有一个返回值,并且只有一句代码,可以使用lambda简化。
二、 lambda语法
lambda 参数列表 :表达式
lambda的参数可有可无,函数的参数在lambda表达式中完全适用。
lambda表达式能接收任何数量的参数,但只能返回一个表达式的值。
2.1 快速入门
# 需求:函数 返回值100
# 1. 函数
# def fn1():
# return 100
#
#
# result = fn1()
# print(result)
# 2. lambda 也叫 匿名函数
# lambda 参数列表: 表达式
fn2 = lambda: 200
print(fn2) # 打印结果 lambda 内存地址
# 200返回值 调用函数
print(fn2())
2.2 实例:任意两个数累加和
# 需求:计算任意两个数的累加和
# 1. 函数
def add(a, b):
return a + b
result = add(1, 2)
print(result)
# 2. lambda
fn1 = lambda a, b: a + b
print(fn1(2, 3))
三、lambda参数形式
# 1. 无参数
fn1 = lambda: 100
print(fn1())
# 2.一个参数
fn2 = lambda a: a
print(fn2('hello world'))
# 3.默认参数/缺省参数
fn3 = lambda a, b, c = 100: a + b + c
print(fn3(10, 20)) # 130
print(fn3(10, 20, 200)) # 230
# 4.可变参数 *args
fn4 = lambda *args: args
print(fn4(10, 20))
print(fn4(10, 20, 30, 40))
print(fn4(10))
# 可变参数传入lambda中后,返回值为元组
# 5.可变参数 **kwargs
fn1 = lambda **kwargs: kwargs
print(fn1(name='python'))
print(fn1(name='python', age=30))
四、lambda应用
# 带判断的lambda
# lambda两个数字比大小,谁大返回谁
fn1 = lambda a, b: a if a > b else b
print(fn1(1000, 500))
4.1列表数据按字典key的值排序
students = [
{'name': 'TOM', 'age': 20},
{'name': 'ROSE', 'age': 19},
{'name': 'TINA', 'age': 18}
]
# sort(key=lambda..., reverse = bool数据)
# 1.name key 对应的值进行升序排序,升序省略reverse
students.sort(key=lambda x: x['name'])
print(students)
# 2.name key 对应的值进行降序排序
students.sort(key=lambda x: x['name'], reverse=True)
print(students)
# 3.age key 对应的值进行升序排序
students.sort(key=lambda x: x['age'])
print(students)