Python_匿名函數_47
阿新 • • 發佈:2019-04-13
log 簡單 mage .cn span 產生 copy func urn
匿名函數
Eva_J
匿名函數:為了解決那些功能很簡單的需求而設計的一句話函數
#這段代碼 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 print(add(1,2))
上面是匿名函數的函數用法。除此之外,匿名函數也不是浪得虛名,它真的可以匿名。在和其他功能函數合作的時候
l=[3,2,100,999,213,1111,31121,333] print(max(l)) dic={‘k1‘:10,‘k2‘:100,‘k3‘:30}print(max(dic)) # k3 #默認取的是key的最大值 dic={‘k1‘:10,‘k2‘:100,‘k3‘:30} def func(key): return dic[key] print(max(dic,key=func)) #根據返回值判斷最大值,返回值最大的那個參數是結果 print(dic[max(dic,key=lambda k:dic[k])])
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}
def func(key):
return max(key)
print(func(dic.values()))
res = map(lambda x:x**2,[1,5,7,4,8]) for i in res: print(i) 輸出 25 16
res = filter(lambda x:x>10,[5,8,11,9,15]) for i in res: print(i) 輸出 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的定義來產生期望的結果。 練習
max([1,2,3,4,5,-6,-7],key=abs) ret = map(abs,[-1,2,-3,4]) for i in ret: print(i) def func(x): return x**2 ret = map(func,[-1,2,-3,4]) for i in ret: print(i) ret = map(lambda x:x**2,[-1,2,-3,4]) def func(x): return x>10 res = filter(func,[5,8,11,9,15]) for i in res: print(i) # min max filter map sorted —— lambda
面試題:
1.下面程序的輸出結果是: d = lambda p:p*2 t = lambda p:p*3 x = 2 x = d(x) x = t(x) x = d(x) print x #24
2.現有兩元組((‘a‘),(‘b‘)),((‘c‘),(‘d‘)),請使用python中匿名函數生成列表[{‘a‘:‘c‘},{‘b‘:‘d‘}]
ret = zip(((‘a‘),(‘b‘)),((‘c‘),(‘d‘))) print(ret) for i in ret: print(i) ret = zip(((‘a‘), (‘b‘)), ((‘c‘), (‘d‘))) def func(tup): return {tup[0]:tup[1]} res = map(func, ret) print(list(res)) ret = zip(((‘a‘), (‘b‘)), ((‘c‘), (‘d‘))) ret = map(lambda t:{t[0]:t[1]},ret) print(list(ret))
print(list(map(lambda t:{t[0]:t[1]},zip(((‘a‘), (‘b‘)), ((‘c‘), (‘d‘))))))
3.以下代碼的輸出是什麽?請給出答案並解釋。 def multipliers(): return [lambda x:i*x for i in range(4)] print([m(2) for m in multipliers()]) 請修改multipliers的定義來產生期望的結果。
def multipliers(): return [lambda x:i*x for i in range(4)] print([m(2) for m in multipliers()]) def multipliers(): return (lambda x:i*x for i in range(4)) print([m(2) for m in multipliers()]) # [6, 6, 6, 6] # [0, 2, 4, 6]
Python_匿名函數_47