從零開始學(xué)python | 什么是Lambda函數(shù)以及如何使用它們?

      網(wǎng)友投稿 886 2025-04-03

      名稱是用于引用或?qū)ぶ啡魏螌?shí)體的約定。我們周圍的幾乎所有事物都有名字。編程領(lǐng)域也與此一致。但這是必須命名的嗎?還是您可以擁有“匿名”商品?答案是肯定的。Python提供了Lambda函數(shù),也稱為匿名函數(shù),實(shí)際上是無名的。因此,讓我們按以下順序繼續(xù)學(xué)習(xí)Python的這些“匿名之謎”。

      Why are Python Lambda Functions required?

      What are Python Lambda Functions?

      How to write Lambda Functions?

      How do Anonymous functions reduce the size of the code?

      Python Lambda functions within user defined functions

      How to use Anonymous functions within:

      filter()

      map()

      reduce()

      因此,讓我們開始:)

      為什么要使用Python Lambda函數(shù)?

      當(dāng)您只需要一次使用某些功能時(shí),匿名功能的主要目的就會(huì)顯現(xiàn)出來。可以在任何需要的地方創(chuàng)建它們。由于這個(gè)原因,Python Lambda函數(shù)也稱為拋出函數(shù),與其他預(yù)定義函數(shù)(例如filter(),map()等)一起使用。與普通的python函數(shù)。

      為了證明這一點(diǎn),讓我們繼續(xù)學(xué)習(xí)Python Lambda函數(shù)。

      什么是Python Lambda函數(shù)?

      Python Lambda函數(shù)是沒有任何名稱的函數(shù)。它們也稱為匿名或無名功能。“ lambda”一詞不是名稱,而是關(guān)鍵字。此關(guān)鍵字指定后面的函數(shù)是匿名的。

      現(xiàn)在您已經(jīng)知道這些匿名函數(shù)指的是什么,讓我們進(jìn)一步了解一下如何編寫這些Python Lambda函數(shù)。

      如何用Python編寫Lambda函數(shù)?

      使用lambda運(yùn)算符創(chuàng)建Lambda函數(shù),其語法如下:

      句法:

      lambda參數(shù):表達(dá)式

      Python?lambda函數(shù)可以具有任意數(shù)量的參數(shù),但只需要一個(gè)表達(dá)式。輸入或自變量可以從0開始,并可以達(dá)到任何限制。就像任何其他函數(shù)一樣,具有不帶輸入的lambda函數(shù)也很好。因此,您可以使用以下任何格式的lambda函數(shù):

      例子:

      lambda:“指定目的”

      在這里,lambda函數(shù)不接受任何參數(shù)。

      例子:

      拉姆達(dá)一個(gè)1:“指定使用的1?“

      在這里,lambda接受一個(gè)輸入,即1。

      同樣,您可以具有l(wèi)ambda a?1,a?2,a?3?..a?n。

      讓我們舉幾個(gè)例子來證明這一點(diǎn):

      范例1:

      a = lambda x: x*x print(a(3))

      輸出:?9

      范例2:

      a = lambda x,y: x*y print(a(3,7))

      輸出:??21

      如您所見,我在這里舉了兩個(gè)例子。第一個(gè)示例僅使用帶有一個(gè)表達(dá)式的lambda函數(shù),而第二個(gè)示例具有傳遞給它的兩個(gè)參數(shù)。請(qǐng)注意,兩個(gè)函數(shù)都有一個(gè)表達(dá)式,后跟參數(shù)。因此,在需要多行表達(dá)式的地方不能使用lambda函數(shù)。

      另一方面,普通的python函數(shù)可以在其函數(shù)定義中使用任意數(shù)量的語句。

      匿名函數(shù)如何減少代碼的大小?

      在比較所需的代碼量之前,讓我們首先寫下常規(guī)函數(shù)的語法,然后將其與前面所述的lambda函數(shù)的語法進(jìn)行比較。

      Python中的任何常規(guī)函數(shù)都是使用def關(guān)鍵字定義的,如下所示:

      句法:

      def function_name(parameters):

      語句

      如您所見,lambda函數(shù)所需的代碼量比普通函數(shù)少得多。

      讓我們用現(xiàn)在的普通函數(shù)重寫前面的示例。

      例子:

      def my_func(x): return x*x print(my_func(3))

      輸出:??9

      如您所見,在上面的示例中,我們需要在my_func中使用return語句來計(jì)算3的平方值。相反,lambda函數(shù)不使用此return語句,而是使用匿名函數(shù)的主體在冒號(hào)后跟函數(shù)本身寫在同一行。因此,函數(shù)的大小小于my_func的大小。

      但是,上述示例中的lambda函數(shù)是使用其他一些變量a調(diào)用的。這樣做是因?yàn)檫@些函數(shù)是無名的,因此需要調(diào)用某些名稱。但是,當(dāng)您需要實(shí)際分配其他名稱來調(diào)用它們時(shí),為什么要使用這樣的無名函數(shù),這一事實(shí)似乎令人困惑?當(dāng)然,在為我的函數(shù)分配名稱a之后,它不再不再是無名的了!正確的?

      這是一個(gè)合理的問題,但重點(diǎn)是,這不是使用這些匿名函數(shù)的正確方法。

      匿名函數(shù)最好在其他將函數(shù)用作參數(shù)或返回函數(shù)作為輸出的其他高階函數(shù)中使用。為了證明這一點(diǎn),讓我們現(xiàn)在繼續(xù)進(jìn)行下一個(gè)主題。

      用戶定義函數(shù)中的Python Lambda函數(shù):

      如上文所述,lambda函數(shù)可在其他函數(shù)中使用,以標(biāo)記出最大的優(yōu)勢(shì)。

      以下示例由new_func組成,這是一個(gè)帶有一個(gè)參數(shù)x的常規(guī)python函數(shù)。然后將此參數(shù)添加到通過lambda函數(shù)提供的未知參數(shù)y中。

      例子:

      def new_func(x): return(lambda y: x+y) t=new_func(3) u=new_func(2) print(t(3)) print(u(3))

      輸出:

      6

      5

      如您所見,在上面的示例中,每當(dāng)我們使用new_func()時(shí),都會(huì)調(diào)用new_func中存在的lambda函數(shù)。每次,我們都可以將單獨(dú)的值傳遞給參數(shù)。

      既然您已經(jīng)了解了如何在高階函數(shù)中使用匿名函數(shù),那么讓我們繼續(xù)了解它的最流行用法之一是在filter(),map()和reduce()方法中。

      如何在filter(),map()和reduce()中使用匿名函數(shù):

      filter()中的匿名函數(shù):

      篩選():

      filter()方法用于在另一個(gè)作為參數(shù)傳遞的函數(shù)的幫助下,過濾給定的iterables(列表,集合等),以測(cè)試所有元素為真還是假。

      該函數(shù)的語法為:

      句法:

      過濾器(函數(shù),可迭代)

      現(xiàn)在考慮以下示例:

      例子:

      my_list = [2,3,4,5,6,7,8] new_list = list(filter(lambda a: (a/3 == 2), my_list)) print(new_list)

      輸出:??[6]

      在這里,my_list是可迭代值的列表,該值傳遞給過濾器函數(shù)。此函數(shù)使用lambda函數(shù)檢查列表中是否有任何值(除以3后等于2)。輸出由滿足匿名函數(shù)中存在的表達(dá)式的列表組成。

      地圖():

      Python中的map()函數(shù)是將給定函數(shù)應(yīng)用于所有可迭代對(duì)象并返回新列表的函數(shù)。

      從零開始學(xué)python | 什么是Lambda函數(shù)以及如何使用它們?

      句法:

      地圖(函數(shù),可迭代)

      讓我們以一個(gè)示例來演示lambda函數(shù)在map()函數(shù)中的用法:

      例子:

      my_list = [2,3,4,5,6,7,8] new_list = list(map(lambda a: (a/3 != 2), li)) print(new_list)

      輸出:

      [True,True,True,True,F(xiàn)alse,True,True]

      上面的輸出顯示,只要可迭代變量的值除以3,就不等于2,則返回的結(jié)果應(yīng)為True。因此,對(duì)于my_list中的所有元素,當(dāng)條件更改為False時(shí),它將返回true(除了值6之外)。

      減少():

      reduce()函數(shù)用于將某些其他函數(shù)應(yīng)用于作為參數(shù)傳遞給它的元素列表,并最終返回單個(gè)值。

      該函數(shù)的語法如下:

      句法:

      減少(功能,順序)

      例子:

      from functools import reduce reduce(lambda a,b: a+b, [23,21,45,98])

      下圖描述了上面的示例:

      輸出:?187

      輸出清楚地表明,列表的所有元素都被連續(xù)添加以返回最終結(jié)果。

      至此,我們結(jié)束了有關(guān)“ Python Lambda”的本文。希望您對(duì)與您共享的所有內(nèi)容一清二楚。?確保盡可能多地練習(xí)并恢復(fù)經(jīng)驗(yàn)。

      Python

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:怎么轉(zhuǎn)換橫縱坐標(biāo)軸(如何轉(zhuǎn)換坐標(biāo)軸)
      下一篇:excel函數(shù)如何統(tǒng)計(jì)符合條件個(gè)數(shù)(統(tǒng)計(jì)符合條件的個(gè)數(shù))
      相關(guān)文章
      久久亚洲av无码精品浪潮| 亚洲精品国产国语| 亚洲熟妇av午夜无码不卡| 亚洲精品免费在线| 亚洲欧洲国产精品你懂的| 亚洲成A人片在线观看无码不卡 | 亚洲中文字幕无码mv| 亚洲偷自精品三十六区| 亚洲AV无码久久久久网站蜜桃| 亚洲成人福利在线| 亚洲午夜在线一区| 亚洲午夜成激人情在线影院| 亚洲人成免费电影| 亚洲中文字幕久久精品无码2021| 亚洲国产综合自在线另类| 亚洲国产日韩在线| 亚洲卡一卡二卡乱码新区| 亚洲综合精品成人| 亚洲成a∧人片在线观看无码 | 久久久久久亚洲精品| 亚洲丁香色婷婷综合欲色啪| 亚洲高清日韩精品第一区| 亚洲国产精品无码久久久| 亚洲天堂2017无码中文| 亚洲精品无码mⅴ在线观看| 久久亚洲中文无码咪咪爱| 老子影院午夜伦不卡亚洲| 亚洲狠狠爱综合影院婷婷| 亚洲一级特黄无码片| 亚洲精品无码久久久久| 亚洲国产人成网站在线电影动漫| 精品亚洲成a人片在线观看| 亚洲午夜国产精品| 亚洲AV第一成肉网| 亚洲男人的天堂一区二区| 亚洲国产精品久久久天堂| 337p欧洲亚洲大胆艺术| 久久精品国产亚洲av麻豆图片 | 久久久久久a亚洲欧洲aⅴ| 亚洲黄色三级视频| 学生妹亚洲一区二区|