一.介绍:lambda,如果一个函数有一个返回值,并且只有一句代码,可以使用lambda简化
语法:lambda 参数列表:表达式
lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用。
lambda表达式能够接收任何数量的参数,但只能返回一个表达式的值
def fn1():
return 100
print(fn1)
print(fn1())
#lambda表达式
fn2 = lambda:100
print(fn2). #输出的是此lambda的内存地址
print(fn2()) #100
例子:计算
def add(a, b):
return a + b
result = add(1,2)
#lambda表达式
fn1 = lambda a, b:a + b
print(fn1(1,2)) #3
二.lambda的参数形式
1.无参数
fn1 = lambda:10
print(fn1())
2.一个参数
fn1 = lambda a:a
print(fn1('hello'))
3.默认参数
fn1 = lambda a,b,c=20:a + b +c
print(fn1(10,20)) #50
4.可变参数:*args
fn1 = lambda *args:args
print(fn1(10,20,30))
5.可变参数:*kwargs 收集不定长的关键字参数,返回一个字典
fn1 = lambda *kwargs:kwargs
print(fn1(name='lily',age=18))
三.lambda的应用
1.带判断的lambda
fn1 = lambda a,b : a if a > b else b
print(fn1(20,10))
2.列表数据按字典key的值排序
teachers = [
{'name':'lily','age':18},
{'name':'Ann','age':20},
{'name':'jack','age':22}
]
#按name值升序排列
teachers.sort(key=lambda x:x['name'])
#按name值降序排列
teachers.sort(key=lambda x:x['name'],reverse = True)
#按age值升序排列
teachers.sort(key=lambda x:x['age'])