您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Python匿名函數(shù)lambda的用法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“Python匿名函數(shù)lambda的用法”吧!
Python內(nèi)置了多個關(guān)鍵字,今天我們來介紹下其中非常好用的lambda關(guān)鍵字,它可以用一個表達式來表示函數(shù)。
lambda 表達式的語法格式:lambda [parameter_list] : expression
從語法格式可以看出 lambda 表達式的幾個要點:
lambda 表達式必須使用 lambda 關(guān)鍵字定義
lambda 表達式只能是單行表達式
parameter_list是參數(shù)列表
expression是表達式
lambda 表達式的本質(zhì)是匿名的、單行函數(shù)體的函數(shù),因此 lambda 表達式也稱為lambda函數(shù)。作為函數(shù),它的輸入是傳入到參數(shù)列表argument_list的值,輸出是根據(jù)表達式expression計算得到的值。
下面是一些lambda函數(shù)示例:
lambda x,y:x*y # 函數(shù)輸入為x和y,輸出為它們的積x*y lambda :None # 函數(shù)沒有輸入?yún)?shù),輸出是None lambda *args:sum(args) # 函數(shù)輸入為任意個數(shù)的參數(shù),輸出是它們的和(隱性要求輸入?yún)?shù)必須能夠進行加法運算) lambda **kwargs:5 # 輸入為任意鍵值對參數(shù),輸出為5
lambda 表達式也可以寫成函數(shù)的形式。例如以上 lambda 表達式lambda x,y:x*y可改寫為函數(shù)形式:
def product(x,y): return x*y
product()函數(shù)只有一行代碼,使用 lambda 表達式可以省去def定義函數(shù)的過程,起到一個函數(shù)速寫的作用。不過總體來說,函數(shù)比 lambda 表達式的適應(yīng)性更強,用來處理更強大的任務(wù)。lambda 表達式主體是一個表達式,而不是一個代碼塊,僅僅能在lambda表達式中封裝有限的邏輯進去。
lambda語法是固定的,本質(zhì)上只能定義一個lambda函數(shù)。根據(jù)定義的lambda函數(shù)可擴展為以下幾種用法:
lambda語法是固定的,本質(zhì)上只能定義一個lambda函數(shù)。根據(jù)定義的lambda函數(shù)可擴展為以下幾種用法:
1 . 將lambda函數(shù)賦值給一個變量,通過這個變量間接調(diào)用該lambda函數(shù)。比如定義了乘法功能的lambda函數(shù)lambda x,y:x*y,并將其賦值給變量product,這樣變量product便成為具有乘法功能的函數(shù),如下所示:
product = lambda x,y:x*y print(product(2,5)) # 10
2 . 將lambda函數(shù)作為參數(shù)傳遞給其他函數(shù)。Python內(nèi)置函數(shù)中部分可接收函數(shù)作為參數(shù)。典型的有filter()、map()、sorted()、reduce()等,大體原理相近,此處介紹以內(nèi)置函數(shù)map()來調(diào)用lambda 表達式。
map函數(shù)的第一個參數(shù)需要傳入函數(shù),此處使用lambda函數(shù)用于指定對列表中每一個元素的共同操作,這樣程序更加簡潔,而且性能更好。如下所示:
# 傳入計算乘法的lambda表達式作為參數(shù) result = map(lambda x,y: x*y, range(8), range(8)) print([e for e in result]) # [0, 1, 4, 9, 16, 25, 36, 49] result = map(lambda x,y: x*y if x % 2 == 0 else 0, range(8), range(8)) print([e for e in result]) # [0, 0, 4, 0, 16, 0, 36, 0]
到此,相信大家對“Python匿名函數(shù)lambda的用法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。