Python— 匿名函數
阿新 • • 發佈:2017-11-11
tip lose ges alt 技術 需求 ron bfc das
匿名函數
匿名函數:為了解決那些功能很簡單的需求而設計的 “一句話函數”
#初始代碼
def calc(n):
return n**n
print(calc(10))
#換成匿名函數
calc = lambda n:n**n
print(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 混用(max(dic)) print(dic[max(dic,key=lambda k:dic[k])]) # 執行結果: 31121 k3 100 Process finished with exit code 0
res = map(lambda x:x**2,[1,5,7,4,8]) for i in res: print(i) # 執行結果 1 25 49 16 64匿名函數與 map 混用
res = filter(lambda x:x>10,[5,8,11,9,15]) for i in匿名函數與 filter 混用res: print(i) # 執行結果 11 15
‘‘‘ 1.下面程序的輸出結果是: d = lambda p:p*2 t = lambda p:p*3 x = 2 x = 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的定義來產生期望的結果。 ‘‘‘面試題:匿名函數
# 第一題 24 Process 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— 匿名函數