lambda表达式
lambda表达式
作用:简化代码。如果一个函数有一个返回值,并且只有一句代码,可以使用lambda简化。
语法
lambda 参数列表: 表达式
注意:
- 参数可有可无,函数的参数在lambda表达式中完全适用
- lambda表达式能接收任何数量的参数但只能返回一个表达式的值
快速入门
# 函数
def fn1():
return 200
print(fn1)
print(fn1())
#lambda表达式, 匿名函数
fn2 = lambda: 100
print(fn2) #lambda内存地址
print(fn2()) # 调用函数并打印返回值
示例:计算a+b
函数实现
def add(a, b):
return a + b
result = add(1, 2)
print(result)
lambda实现
fn1 = lambda a, b: a + b
print(fn1(1, 2))
lambda的参数形式
无参数
fn1 = lambda: 100
print(fn1())
一个参数
fn1 = lambda a: a
print(fn1('hello world'))
默认参数
fn1 = lambda a, b, c=100: a + b + c
print(fn1(10, 20)) # 10 + 20 + 100
print(fn1(10, 20, 200)) # 10 + 20 + 200
可变参数:*args
fn1 = lambda *args: args
print(fn1(10, 20)) # (10, 20)
print(fn1(10, 20, 30)) # (10, 20, 30)
可变参数:**kwargs
fn1 = lambda **kwargs: kwargs
print(fn1(name='Python')) # {'name': 'Python'}
print(fn1(name='Python', age=10)) # {'name': 'Python', 'age': 10}
lambda的应用
带判断的lambda
# 比较a, b两个数,返回大的数
fn1 = lambda a, b: a if a > b else b
print(fn1(100, 500))
列表数据按字典key的值排序
students = [
{'name': 'Tom','age': 20}
{'name': 'Jack','age': 23}
{'name': 'Jack','age': 18}
]
# 按name值升序排序
students.sort(key= lambda x: x['name'])
# 按name值降序排序
students.sort(key= lambda x: x['name'], reverse=True)
print(students)
# 按age值升序排序
students.sort(key= lambda x: x['age'])
print(students)