Python全棧學習筆記day 16:匿名函式
阿新 • • 發佈:2018-11-02
匿名函式:為了解決那些功能很簡單的需求而設計的一句話函式
這段程式碼
def calc(n):
return n**n
print(calc(10))
換成匿名函式
calc = lambda n:n**n
print(calc(10))
下面給出了一個關於匿名函式格式的說明:
函式名 = lambda 引數 :返回值 #引數可以有多個,用逗號隔開 #匿名函式不管邏輯多複雜,只能寫一行,且邏輯執行結束後的內容就是返回值 #返回值和正常的函式一樣可以是任意資料型別
栗子:返回dic中value最大的那個key
dic={'k1':10,'k2':100,'k3':30} def func(key): return dic[key] print(max(dic,key=func)) #根據返回值判斷最大值,返回值最大的那個引數是結果
也可以:
dic={'k1':10,'k2':100,'k3':30}
print(max(dic,key=lambda key:dic[key]))
面試題:
現有兩個元組(('a'),('b')),(('c'),('d')),請使用python中匿名函式生成列表[{'a':'c'},{'b':'d'}]
思路:想到zip,和匿名函式,只要考到匿名函式就要想到內建函式,
ret =zip((('a'),('b')),(('c'),('d')))
for i in ret:
print(i)
('a', 'c')
('b', 'd')
此時輸出的結果和目標已經很相似了,但是現在輸出還是元祖不是字典
ret =zip((('a'),('b')),(('c'),('d')))
def func(tup):
return {tup[0]:tup[1]}
res = map(func,ret)
for i in res:
print(i)
{'a': 'c'}
{'b': 'd'}
現在變為字典了,在合成一個列表
ret =zip((('a'),('b')),(('c'),('d'))) def func(tup): return {tup[0]:tup[1]} res = map(func,ret) print(list(res)) [{'a': 'c'}, {'b': 'd'}]
到此時還是沒有使用匿名函式,在進行簡化
ret =zip((('a'),('b')),(('c'),('d')))
# def func(tup):
# return {tup[0]:tup[1]}
res = map(lambda tup:{tup[0]:tup[1]},ret)
print(list(res))
print(list(map(lambda tup:{tup[0]:tup[1]},zip((('a'),('b')),(('c'),('d'))))))