lambda 参数列表:表达式/返回值
其中:参数列表可有可无,可以接收任意数量的参数,但只能返回一个值。
def fun1(): return 100 print(fun1) print(fun1()) fun2 = lambda :100 print(fun2) print(fun2()) <function fun1 at 0x00000213E2812EA0> 100 <function <lambda> at 0x00000213E4675A60> 100
注意fun2是一个函数名字。
练习:计算三个数的平均值
# 计算三个数的平均值 def avg(a,b,c): return ((a+b+c)/3) print(avg(1,2,3)) avg2 = lambda a,b,c:((a+b+c)/3) print(avg2(1,2,3)) 2.0 2.0
与函数的参数形式相同
fun = lambda :100 print(fun()) 100
fun = lambda a:a*2 print(fun('python')) pythonpython
fun = lambda a,b,c=3:((a+b+c)/3) print(fun(1,2,3)) print(fun(1,2)) 2.0 2.0
接收不定长的位置参数,返回一个元组。
fun = lambda *args:args print(fun(10,20,30)) (10, 20, 30)
接收不定长的关键字参数,返回一个字典。
fun = lambda **kwargs:kwargs print(fun(name = 'Mary',age=20)) {'name': 'Mary', 'age': 20}
注意:args和kwargs名称是可变的,但一般默认是这两个。但前面一个*号和两个 *号要注意。
fun = lambda a,b:a if a>b else b # 表示条件成立,执行前面的;条件不成立,执行后面的。 print(fun(100,50)) print(fun(50,100)) 100 100
student = [ {'name':'Mary','age':20}, {'name':'Jone','age':25}, {'name':'Susan','age':30} ] student.sort(key=lambda x:x['age'])# 按照age对应的值升序排序 print(student) student.sort(key=lambda x:x['age'],reverse=True)# 按照age对应的值降序排序 print(student) [{'name': 'Mary', 'age': 20}, {'name': 'Jone', 'age': 25}, {'name': 'Susan', 'age': 30}] [{'name': 'Susan', 'age': 30}, {'name': 'Jone', 'age': 25}, {'name': 'Mary', 'age': 20}]