一、概念
匿名函數造出來的是一個內存地址,且內存地址沒有綁定任何名字,很快被當做垃圾清理掉。所以匿名函數只需要臨時調用一次,而有名函數永久使用;
匿名函數一般和其他函數配合使用;
# 有名函數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 表示字典中的keyreturn 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)
?運行結果:
['康師傅_老壇酸菜', '統一_老壇酸菜', '大今野_老壇酸菜', '白象_老壇酸菜']