# 函數名 = lambda 參數 :返回值。 匿名函數只是函數,若是要經過可迭代對象給匿名函數傳參,就須要使用 map 或者 filter calc = lambda n:n**n calc(1)
clac2 = lambda x,y:x+y calc2(1,2) 參數能夠有多個,用逗號隔開 匿名函數無論邏輯多複雜,只能寫一行,且邏輯執行結束後的內容就是返回值 返回值和正常的函數同樣能夠是任意數據類型 求最大value的key dict = {'k1':10,'k2':100,'k3':30} print(max(dict)) print(max(dict,key=lambda k:dict[k])) 內置方法中帶key的有 max min filter map sorted,均可以和lambda合做
面試題:python
#作面試題的時候,要多想一想考什麼,好比生成器,迭代器,裝飾器必考,多想一想是否是考這些 #!!!!!!!!!!!!!!!考匿名函數,其實就是爲了考內置函數 max min filter map sorted #第一題讀代碼 d = lambda q:q*2 t = lambda t:t*3 x = 2 x = d(x) x = t(x) x = d(x) print(x) #第二題,現有兩元組(('a'),('b')),(('c'),('d')), #清用python中匿名函數生成列表[{'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)) #第三題,如下代碼的輸出是什麼? def multipliers(): ret = [lambda x:i*x for i in range(4)] return ret print([m(2) for m in multipliers()]) #multipliers() 運行完 返回值是 [lambda x:i*x for i in range(4)] #這個匿名函數 此時是有運行的,能夠理解成運行了四次lambda x:i*x #[lambda x:i*x lambda x:i*x lambda x:i*x lambda x:i*x] #可是運行完了四次,此時 i == 3 因此當 m(2)給匿名函數傳值的時候,輸出結果就爲[6,6,6,6] #若想達到預期結果,只要把 返回值改成 (lambda x:i*x for i in range(4)),讓它變成生成器表達式 #此時調用multipliers函數並不會運行,只有當 m(2)執行一次for循環纔會運行一次