前言:
使用def关键字的函数相当于一个创建一个容器空间,随时可以对其调用,lambda关键字创建的函数则是没有名字的,一次性使用即被释放。
匿名函数的定义
语法格式:
方式一 无参匿名函数:
lambda :表达式(函数的返回值)
方式二 有参匿名函数:
lambda 参数1,参数2,...:表达式(函数的返回值)
使用方法
# 方式一:
res = (lambda x,y: x + y)(1,2)
print(res)
>>> 3
# 方式二:
res = lambda x,y: x + y
res(1,2)
print(res)
>>> 3
# 不常用法
# "匿名"的本质就是没有名字,这里定义的匿名函数给它们赋予了名字就丧失了意义
搭配if…else使用
取两个值的最大值
# 正常函数写法
def func(x,y):
if x > y:
return x
else:
return y
res = func(10,20)
# 使用匿名函数写法
func = lambda x,y:x if x > y else y
res = func(10,15)
print(res)
>>> 15
匿名函数与def关键字创建的函数有共同的作用域,但是匿名函数计数为0,引用一次就被释放,所以匿名函数一般用于临时用一次的场景,匿名函数通常与其它函数配合使用。
配合内置函数使用
user_age = {
'tom':20,
'jack':18,
'jams':25,
'rous':17,
}
为了取得字典内的最大和最小值,我们可以使用内置函数max和min(Python解释器已经定义好的一些功能,供我们随时调用)
max(user_age)
>>> 'tom'
min(user_age)
>>> 'jack'
max和min支持迭代对比值,字典则是拿key进行对比, 而我们想要的是值之间的大小值,那么我们需要进行调整
# 正常写法是
def age_contrast(k):
return user_age[k]
max(user_age,key=age_contrast)
>>> 'jams'
# 匿名函数的写法
# max会遍历这个字典,取出字典的“人名”交给匿名函数,而后匿名函数返回这个key对应的value,然后将匿名函数的返回值做比较依据,最终拿到最大值的人名
max(user_age,key=lambda k: user_age[k])
>>> 'jams'
min(user_age,key=lambda k: user_age[k])
'rous'
对字典的值进行排序
sorted(user_age,key=lambda k:user_age[k])
>>> ['rous', 'jack', 'tom', 'jams'] # 默认从小到大排序
sorted(user_age,key=lambda k:user_age[k],reverse=True)
>>> ['jams', 'tom', 'jack', 'rous'] # reverse从大到小排序
根据年龄返回信息
student_info = [
{'name': 'tom', 'age': 20},
{'name': 'jack', 'age': 18},
{'name': 'jams', 'age': 25},
{'name': 'rous', 'age': 17}
]
max(student_info,key= lambda x:x['age']) # 遍历的元素都是字典,对比每个字典的age属性
>>> {'name': 'jams', 'age': 25}
sorted(student_info.items(),key= lambda x:x['age']) # 从大到小排序
技术小白记录学习过程,有错误或不解的地方请指出,如果这篇文章对你有所帮助请
点赞 收藏+关注
子夜期待你的关注,谢谢支持!