一、lambda应用场景
如果一个函数只有一个返回值,并且只有一句代码,则可以使用lambda表达式进行简化
二、语法
语法: lambda 参数列表:表达式
注意两点:
1.lambda表达式的参数可有可无,函数的参数在lambda中同样适用
2.lambda表达式能接受任何数量的参数,但只能返回一个表达式的值
三、样例演示1
# 定义一个函数,该函数返回一个数值型的数,如520
def f():
return 520
# 将f函数用lambda表达式表示
f1 = lambda : 520
print(f()) # 打印520
print(f1) # <function <lambda> at 0x000001BD0BE213A0>即返回的是一个内存地址----》相当于函数名
print(f1()) # 函数的调用
运行结果:
四、样例演示2
# 定义一个函数,用于计算a+b的和
def f11(a, b):
return a+b
# 改用lambda后
f12 = lambda a,b: a+b
print(f11(5,4))
print(f12(5,4))
运行结果:
五、在工作场景中的简单运用
# 带判断的lambda
fn6 = lambda a,b:a if a>b else b # 使用了双目表达式,即传入a,b两个值作为参数,如果a大于b就返回a否则返回b
print(fn6(300,1000))
运行结果:
# 如果列表里的元素为字典,则需要按照字典里的某一个元素进行排序时,可以使用lambda函数
students = [
{"name" : "zhansna" , "age" : 18},
{"name" : "lisi" , "age" : 19},
{"name" : "wawu" , "age" : 20}
]
# 按name值升序排序
students.sort(key=lambda x: x['name']) # 按名字进行升序排序
print(students)
# 按name值降序排序
students.sort(key=lambda x: x['name'], reverse=True)
print(students)
# 按age值升序排列
students.sort(key=lambda x: x['age'])
print(students)
运行结果:
六、lambda几种参数形式总结
# lambda的参数形式
# 1. 无参数
fn1 = lambda : 100
print(fn1())
# 2. 一个参数
fn2 = lambda a : a
print(fn2("平平安安"))
# 3. 默认参数
fn3 = lambda a, b, c=100 : a+b+c # 因为是默认参数,即含有默认值的参数,故当函数调用的时候,如果不传入值给默认参数,则使用定义时的参数,如若赋值则覆盖定义时的默认值
print(fn3(10,30))
# 4. 可变参数 *args 这里的可变参数传入到lambda后,返回值为元组
fn4 = lambda *args : args
print(fn4(10,20,30))
# 5. 可变参数 **kwargs 传入的是不定长的关键字参数,如 name=“张三” ,其返回值为字典
fn5 = lambda **kwargs : kwargs
print(fn5(name="张三",age=100))
运行结果:
七、写在后面
以上是本人在学习lambda过程中的一点简单总结,如有错误地方,欢迎读者朋友们评论指正。