Python中的lambda函式

2021-09-14 04:04:21 字數 2538 閱讀 4570

python中的lambda函式

在python中,我們使用lambda關鍵字來宣告乙個匿名函式,這就是為什麼我們將它們稱為「lambda函式」。匿名函式是指沒有宣告函式名稱的函式。儘管它們在語法上看起來不同,lambda函式的行為方式與使用def關鍵字宣告的一般函式相同。以下是python中 lambda函式的特點:

lambda函式可以接受任意數量的引數,但函式只能包含乙個表示式。表示式是lambda函式執行的一段**,它可以返回任何值,也可以不返回任何值。

lambda函式可以返回函式物件。

從語法上講,lambda函式只能有乙個表示式。

在本文中,我們將詳細討論python中的lambda函式,並演示使用它們的例子。

建立乙個lambda函式

我們使用以下語法來宣告lambda函式:

正如上面所述,我們可以有很多個引數,但是只能有乙個表示式。lambda操作符不能有任何宣告,它返回乙個函式物件,我們可以將此函式物件賦值給任何變數。

例如:

這段**中,lambda num: num% 2是lambda函式。num是引數,num%2是表示式,用來計算後返回結果。該表示式獲取輸入引數除以2的模數並返回。將5作為引數傳入,通過除以2進行計算,得到餘數1.

你應該注意到,上面指令碼中的lambda函式沒有分配任何名稱。它只是返回乙個函式物件,該物件被分配給識別符號remainder。然而,儘管函式是匿名的,我們還是可以像呼叫普通函式那樣呼叫它。宣告語句如下:

上面定義的lambda函式返回乙個product物件,該物件具有兩個引數的值。

為什麼使用lambda 函式?

lambda函式主要在短時間內需要乙個函式時才使用。當你想要將函式作為引數傳遞給高階函式(即以其他函式作為引數的函式)時,通常使用這種方法。

下面的例子演示了在其他函式中使用匿名函式:

在上面的例子中,我們有乙個函式,該函式傳入乙個引數,將它與乙個未知數相乘。我們來演示一下怎樣使用上面的函式:

在上面的指令碼中,我們使用乙個lambda函式與我們傳入的數字10相乘。同樣的函式也可以用來與數字1000相乘。

我們很有可能會使用到testfunc( )函式來在乙個程式中定義上面的兩個lambda函式:

lambda函式可以和python的內建函式一起使用,例如map(),filter()等。

在接下來的章節中,我們將討論怎樣在各種python內建函式中使用lambda函式。

filter() 函式

python中的filter( )函式接受乙個列表引數和乙個lambda函式引數。它的語法如下:

這裡的object必須是乙個返回布林值的lambda函式。對迭代器中的每一項都會呼叫該函式來計算其結果是true或false。請注意,本函式只能接受乙個迭代器作為輸入。

lambda函式,和需要被處理的列表,被一同傳遞給filter( )函式。filter()函式將返回乙個新的列表,新的列表中只包含舊列表中被lambda函式處理後返回值為true的那些元素。請參考下面給出的例子:

在上面的例子中,我們先建立了乙個包含一系列整數的列表number_list,接著我們建立了乙個lambda函式來檢查大於7的整數。此lambda函式作為引數傳遞給filter()函式,過濾後的結果儲存在乙個名為filtered_list的新列表中。

map( ) 函式

map( )函式是另乙個以乙個函式物件和乙個列表作為引數的內建函式。map函式的語法如下:

結論

在python中,乙個lambda函式是乙個只有一行**的函式,不需要進行函式名宣告,它可以有很多個引數,但是只能有乙個表示式。它和使用python關鍵字def宣告的函式具有相似的功能。大多數情況下,lambda函式只作為引數傳遞給其他函式。

在本文中,我們講解了廣泛使用的lambda函式的語法,用例以及例項。

python的map函式和lambda函式

map函式的功能是根據提供的函式對指定序列做對映,就是對第二個引數的每乙個值執行第乙個引數所指定的函式 lambda是定義乙個匿名函式 crsusr rws1270149 python study cat mypy02.py usr bin python3.7 import sys,string,o...

Python中的defaultdict函式

用於產生乙個帶有預設值的dict。主要針對key不存在的情況下,也希望有返回值的情況。a dict a k1 1 a a k2 traceback most recent call last file line 1,in keyerror k2 對於普通的dict,key不存在就報錯。但是對於def...

python中ground truth的函式

機器學習包括有監督學習 supervised learning 無監督學習 unsupervised learning 和半監督學習 semi supervised learning 在 有監督學習中,資料是有標註的,以 x,t 的形式出現,其中x是輸入資料,t是標註.正確的t標註是ground t...