Python:lambda表达式
·
一、lambda表达式定义
lambda表达式也叫匿名函数,用于代码的简化,适用于一个函数只有语句代码,一个返回值。
语法:
变量 = lambda 函数参数列表:表达式
调用语法:
变量(参数列表)
注意:参数可以没有,定义匿名函数时可以省略
案例1:
定义一个函数,返回88,通过普通函数和匿名函数对比实现
# 1.普通函数
def fun():
return 88
# 调用函数并打印返回值
print(fun()) #88
# 2.匿名函数(lambda)表达式
f = lambda : 88
# 调用函数并打印返回值
print(f())
# 打印变量名:变量名指向存储地址,地址中存放匿名函数代码
print(f) #<function <lambda> at 0x000002059E047798>
二、带参数的lambda表达式
1.普通参数
定义一个函数,求两个数值的乘积,通过普通函数和匿名函数对比实现
# 1.普通函数
def fun(number1, number2):
return number1 * number2
print(fun(2, 3))
# 2.lambda表达式
f = lambda number1, number2: number1 * number2
print(f(2, 3))
2.默认值参数
默认值参数可以给实参也可以不传递实参,不传递实参时,适用默认值数据进行运算
f = lambda n, m, k=100: n + m + k
print(f(10,20) ) #130
print(f(10,20,30)) #60
3.不定长参数:可变参数*args
f = lambda *args: args
print(f(1,2,3,4.5,6)) #(1, 2, 3, 4.5, 6)
4.不定长参数:可变参数**kwargs
f = lambda **kwargs: kwargs
print(f(name='孙权', age=18, sex='男'))
三、带if的lambda表达式
定义一个函数,求两个数值中的最大值,通过普通函数和匿名函数对比实现
# 1.普通函数
def fun(number1,number2):
if number1>number2:
return number1
else:
return number2
print(fun(2,3))
# 2.lambda表达式
f = lambda number1,number2 : number1 if number1>number2 else number2
print(f(2,3))
四、列表+字典数据lambda排序
语法:
列表名.sort(key=lambada表达式,reverse=True/False)
依据列表中的字典元素项的某个元素进行排序(升序或降序)
案例
根据name排序employee列表中的字典元素项
employee = [
{'name': 'zgl', 'age': 21},
{'name': 'sq', 'age': 20},
{'name': 'lv', 'age': 40}
]
# 1.按name升序排序
employee.sort(key=lambda x: x['name'], reverse=False)
print(employee) #[{'name': 'lv', 'age': 40}, {'name': 'sq', 'age': 20}, {'name': 'zgl', 'age': 21}]
# 2.按name降序排序
employee.sort(key=lambda x: x['name'], reverse=True)
print(employee) #[{'name': 'zgl', 'age': 21}, {'name': 'sq', 'age': 20}, {'name': 'lv', 'age': 40}]
# 3.按age升序排序
employee.sort(key=lambda x:x['age'])
print(employee) #[{'name': 'sq', 'age': 20}, {'name': 'zgl', 'age': 21}, {'name': 'lv', 'age': 40}]
# 4.按age降序排序
employee.sort(key=lambda x:x['age'],reverse=True)
print(employee) #[{'name': 'lv', 'age': 40}, {'name': 'zgl', 'age': 21}, {'name': 'sq', 'age': 20}]
'''
分析“按name升序排序”
当程序执行到"employee.sort(key=lambda x: x['name'], reverse=False)"代码处:
1.sort函数会遍历employee中的元素(字典),将元素逐个赋值放入x变量中进行lambda表达式运算,获取x['name']对应的值,并保存到临时变量中。
2.对取出来的值进行排序,同时对应字典顺序也随着值的排序进行自动排序。
'''更多推荐




所有评论(0)