一、概念
匿名函数造出来的是一个内存地址,且内存地址没有绑定任何名字,很快被当做垃圾清理掉。所以匿名函数只需要临时调用一次,而有名函数永久使用;
匿名函数一般和其他函数配合使用;
# 有名函数 def func(x, y): return x + y # 匿名函数 res = (lambda x, y=1: x + y)(1,2) # 返回x+y 的值 print(res) res = (lambda x, y=1:print(x-y))(1,2) print(res)
二、实例
实例一:
info = {
'jack': 10000,
'tony': 2000,
'andy': 3087,
'yvette': 987,
'lucky': 7890
}
def func(k): # 该处k 表示字典中的key
return info[k] # 这样就可以得到key 对应的值
# key传一个函数内存地址,max每迭代一次就需要传一次参数
# 通过名字拿到对应的值,把这个值作为比较依据,key传一个函数内存地址,max每迭代一次就需要传一次参数
res = max(info, key=func) # key=函数内存地址
print(res)
运用匿名函数
将func函数注释掉,如下
res = max(info, key=lambda k: info[k]) print(res)
实例二:
# 依据数组内的元组第二位排序
l = [(1, 2), (4, 3), (2, 1), (6, 5)]
# 整体依据内部小元组第二个值排序
l.sort(key=lambda item: item[1]) # item [1] 返回内部小元组的第二位
print(l)
运行结果:
[(2, 1), (1, 2), (4, 3), (6, 5)]
实例三:
注:如果原始列表l很长,可以将 [] 换成();
# 每个词后均加'老坛酸菜'
l = ['康师傅', '统一', '大今野', '白象']
# 列表生成式
new_l = [name +'_老坛酸菜' for name in l]
print(new_l)
运行结果:
['康师傅_老坛酸菜', '统一_老坛酸菜', '大今野_老坛酸菜', '白象_老坛酸菜']