Python:lambda表達式的兩種應用場景


01

lambda表達式

 

python書寫簡單,功能強大, 迅速發展成為 AI ,深度學習的主要語言。介紹Python中的lambda表達式,注意到,它只是一個表達式,不是語句啊。

 

lambda的語法規則: 一個或多個參數以冒號終止輸入參數,這些參數可以理解為有名函數原型的輸入參數,以后是一個表達式,相當於有名函數的函數體部分。lambda的函數體部分,是作為返回值輸出部分。

 

02

場景1:map 和 reduce

Python 中的 map 和 reduce,再結合 lambda表達式的話,使用起來會更加高效,如下所示:

 

def sum(mylist):

    return reduce(lambda x, y: 2*x + 1*y, mylist)

 

可以看到兩個輸入參數 x, y , 返回為 2*x + y ,通過這樣對 mylist 的元素完成化簡操作。

 

03

場景2: lambda 和 list 結合使用

這個場景在面試中經常被問到,如下所示:

li = [lambda :x for x in range(10)]

 

得到一個 lambda 的list,打印 li[0]() 會得到什么,注意這種調用方法,因為是數組,先拿第一個元素,li[0],后面的括號表示調用lambda表達式。打印的結果為 0 嗎? 

 

NO!是 9

 

lambda表達式不會形成對函數體內變量的記憶,只記錄最后一個狀態。 

 

那么如果lambda的入參中帶有x, 會得到我們想要的結果0 嗎?

 

li = [lambda x :x for x in range(10)]

res = li[0](0)

print(res)

 

輸出:0

 

因此,需要注意區分這兩種寫法的不同,記得這個區別,在一次面試中,曾經被問到,希望對大家有用。


免責聲明!

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



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