匿名函數lambda及面試題三道


# 函數名 = 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合作

 

 

面試題:

#做面試題的時候,要多想想考什么,比如生成器,迭代器,裝飾器必考,多想想是不是考這些
#!!!!!!!!!!!!!!!考匿名函數,其實就是為了考內置函數  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循環才會運行一次

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM