標籤:解釋 das nbsp ges 調用 類型 lam 結果 cal
匿名函數
匿名函數:為瞭解決那些功能很簡單的需求而設計的 “一句話函數”
#初始代碼def calc(n): return n**nprint(calc(10)) #換成匿名函數calc = lambda n:n**nprint(calc(10))
是對calc這個匿名函數的分析
# 關於匿名函數格式的說明函數名 = lambda 參數 :傳回值(相當於函數體)# 參數可以有多個,用逗號隔開# 匿名函數不管邏輯多複雜,只能寫一行,且邏輯執行結束後的內容就是傳回值# 傳回值和正常的函數一樣可以是任意資料類型
由此可見:
匿名函數並不是真的沒有名字。
匿名函數的調用和正常的調用也沒有什麼分別。
# 把以下函數變成匿名函數def add(x,y): return x+y# 匿名函數add = lambda x,y : x+y
匿名函數練習
上面是匿名函數的函數用法。
除此之外,匿名函數也不是浪得虛名。在和其他功能函數合作的時候~~~它真的可以匿名
l=[3,2,100,999,213,1111,31121,333]print(max(l))dic={‘k1‘:10,‘k2‘:100,‘k3‘:30}print(max(dic))print(dic[max(dic,key=lambda k:dic[k])])# 執行結果:31121k3100Process finished with exit code 0匿名函數與 max 混用
res = map(lambda x:x**2,[1,5,7,4,8])for i in res: print(i)# 執行結果125491664
匿名函數與 map 混用
res = filter(lambda x:x>10,[5,8,11,9,15])for i in res: print(i)# 執行結果1115
匿名函數與 filter 混用
‘‘‘1.下面程式的輸出結果是:d = lambda p:p*2t = lambda p:p*3x = 2x = d(x)x = t(x)x = d(x)print x‘‘‘‘‘‘2.現有兩元組((‘a‘),(‘b‘)),((‘c‘),(‘d‘)),請使用python中匿名函數產生列表[{‘a‘:‘c‘},{‘b‘:‘d‘}]‘‘‘‘‘‘3.以下代碼的輸出是什嗎?請給出答案並解釋。def multipliers(): return [lambda x:i*x for i in range(4)]print([m(2) for m in multipliers()])請修改multipliers的定義來產生期望的結果。‘‘‘面試題:匿名函數
# 第一題 24Process finished with exit code 0# 第二題t1 = ((‘a‘), (‘b‘))t2 = ((‘c‘), (‘d‘))t3 = zip(t1, t2)print(list(lambda t : {t[0] : t[1]}, t3))# 第三題# 答案一test = lambda t1,t2 :[{i:j} for i,j in zip(t1,t2)]print(test(t1,t2))# 答案二print(list(map(lambda t:{t[0]:t[1]},zip(t1,t2))))# 答案三print([{i:j} for i,j in zip(t1,t2)])答案——面試題: 匿名函數
Python— 匿名函數