本篇內(nèi)容主要講解“Python匿名函數(shù)lambda的用法”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Python匿名函數(shù)lambda的用法”吧!
專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)三門峽免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了近1000家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。Python內(nèi)置了多個(gè)關(guān)鍵字,今天我們來(lái)介紹下其中非常好用的lambda關(guān)鍵字,它可以用一個(gè)表達(dá)式來(lái)表示函數(shù)。
lambda 表達(dá)式的語(yǔ)法格式:lambda [parameter_list] : expression
從語(yǔ)法格式可以看出 lambda 表達(dá)式的幾個(gè)要點(diǎn):
lambda 表達(dá)式必須使用 lambda 關(guān)鍵字定義
lambda 表達(dá)式只能是單行表達(dá)式
parameter_list是參數(shù)列表
expression是表達(dá)式
lambda 表達(dá)式的本質(zhì)是匿名的、單行函數(shù)體的函數(shù),因此 lambda 表達(dá)式也稱為lambda函數(shù)。作為函數(shù),它的輸入是傳入到參數(shù)列表argument_list的值,輸出是根據(jù)表達(dá)式expression計(jì)算得到的值。
下面是一些lambda函數(shù)示例:
lambda x,y:x*y # 函數(shù)輸入為x和y,輸出為它們的積x*y lambda :None # 函數(shù)沒有輸入?yún)?shù),輸出是None lambda *args:sum(args) # 函數(shù)輸入為任意個(gè)數(shù)的參數(shù),輸出是它們的和(隱性要求輸入?yún)?shù)必須能夠進(jìn)行加法運(yùn)算) lambda **kwargs:5 # 輸入為任意鍵值對(duì)參數(shù),輸出為5
lambda 表達(dá)式也可以寫成函數(shù)的形式。例如以上 lambda 表達(dá)式lambda x,y:x*y可改寫為函數(shù)形式:
def product(x,y): return x*y
product()函數(shù)只有一行代碼,使用 lambda 表達(dá)式可以省去def定義函數(shù)的過(guò)程,起到一個(gè)函數(shù)速寫的作用。不過(guò)總體來(lái)說(shuō),函數(shù)比 lambda 表達(dá)式的適應(yīng)性更強(qiáng),用來(lái)處理更強(qiáng)大的任務(wù)。lambda 表達(dá)式主體是一個(gè)表達(dá)式,而不是一個(gè)代碼塊,僅僅能在lambda表達(dá)式中封裝有限的邏輯進(jìn)去。
lambda語(yǔ)法是固定的,本質(zhì)上只能定義一個(gè)lambda函數(shù)。根據(jù)定義的lambda函數(shù)可擴(kuò)展為以下幾種用法:
lambda語(yǔ)法是固定的,本質(zhì)上只能定義一個(gè)lambda函數(shù)。根據(jù)定義的lambda函數(shù)可擴(kuò)展為以下幾種用法:
1 . 將lambda函數(shù)賦值給一個(gè)變量,通過(guò)這個(gè)變量間接調(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()來(lái)調(diào)用lambda 表達(dá)式。
map函數(shù)的第一個(gè)參數(shù)需要傳入函數(shù),此處使用lambda函數(shù)用于指定對(duì)列表中每一個(gè)元素的共同操作,這樣程序更加簡(jiǎn)潔,而且性能更好。如下所示:
# 傳入計(jì)算乘法的lambda表達(dá)式作為參數(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]
到此,相信大家對(duì)“Python匿名函數(shù)lambda的用法”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!