python中,匿名列表就是匿名函數(shù),顧名思義,就是沒(méi)有名字的函數(shù)。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序定制開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了龍陵免費(fèi)建站歡迎大家使用!
它主要用在那些只使用一次的場(chǎng)景中。如果我們的程序中只需要調(diào)用一次某個(gè)簡(jiǎn)單邏輯,把它寫成函數(shù)還需要先定義、取函數(shù)名字等一些列操作,這種場(chǎng)景下使用匿名函數(shù)往往能夠讓你的程序更加簡(jiǎn)單。
匿名函數(shù)還有名稱,叫做lambda。匿名函數(shù)格式如下:lambdaarg1,arg2...,argN:expression,它常用格式是lambda關(guān)鍵字+逗號(hào)分隔的參數(shù)+冒號(hào)+表達(dá)式。
匿名函數(shù):使用lambda創(chuàng)建的函數(shù),所謂匿名,意即不再使用def語(yǔ)句這樣標(biāo)準(zhǔn)的形式定義一個(gè)函數(shù)。
好處:
1、使用Python寫一些執(zhí)行腳本時(shí),使用lambda可以省去定義函數(shù)的過(guò)程,讓代碼更加精簡(jiǎn)。
2、對(duì)于一些抽象的,不會(huì)別的地方再?gòu)?fù)用的函數(shù),有時(shí)候給函數(shù)起個(gè)名字也是個(gè)難題,使用lambda不需要考慮命名的問(wèn)題。
3、使用lambda在某些時(shí)候讓代碼更容易理解。了解更多python匿名函數(shù)相關(guān)知識(shí),可以來(lái)老男孩教育。
應(yīng)用場(chǎng)景:經(jīng)常與一些內(nèi)置函數(shù)相結(jié)合使用,比如說(shuō)map()、filter()、sorted()、reduce()等。
表達(dá)式格式:lambda 參數(shù)列表:lambda體
Python——Lambda表達(dá)式是一個(gè)匿名函數(shù),Lambda 表達(dá)式基于數(shù)學(xué)中的lambda演算得名,直接對(duì)應(yīng)于其中的 lambda 抽象,是一個(gè)匿名函數(shù),即沒(méi)有函數(shù)名的函數(shù)。
Python由荷蘭數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究學(xué)會(huì)的Guido van Rossum 于1990 年代初設(shè)計(jì),作為一門叫做ABC語(yǔ)言的替代品。Python提供了高效的高級(jí)數(shù)據(jù)結(jié)構(gòu),還能簡(jiǎn)單有效地面向?qū)ο缶幊獭?/p>
Python語(yǔ)法和動(dòng)態(tài)類型,以及解釋型語(yǔ)言的本質(zhì),使它成為多數(shù)平臺(tái)上寫腳本和快速開(kāi)發(fā)應(yīng)用的編程語(yǔ)言,隨著版本的不斷更新和語(yǔ)言新功能的添加,逐漸被用于獨(dú)立的、大型項(xiàng)目的開(kāi)發(fā)。
Python解釋器易于擴(kuò)展,可以使用C或C++(或者其他可以通過(guò)C調(diào)用的語(yǔ)言)擴(kuò)展新的功能和數(shù)據(jù)類型。Python 也可用于可定制化軟件中的擴(kuò)展程序語(yǔ)言。Python豐富的標(biāo)準(zhǔn)庫(kù),提供了適用于各個(gè)主要系統(tǒng)平臺(tái)的源碼或機(jī)器碼。
擴(kuò)展資料:
python的發(fā)展歷程:
自從20世紀(jì)90年代初Python語(yǔ)言誕生至今,它已被逐漸廣泛應(yīng)用于系統(tǒng)管理任務(wù)的處理和Web編程。
Python的創(chuàng)始人為荷蘭人吉多·范羅蘇姆。1989年圣誕節(jié)期間,在阿姆斯特丹,Guido為了打發(fā)圣誕節(jié)的無(wú)趣,決心開(kāi)發(fā)一個(gè)新的腳本解釋程序,作為ABC語(yǔ)言的一種繼承。之所以選中Python(作為該編程語(yǔ)言的名字,是取自英國(guó)20世紀(jì)70年代首播的電視喜劇《蒙提·派森的飛行馬戲團(tuán)》。
ABC是由Guido參加設(shè)計(jì)的一種教學(xué)語(yǔ)言。就Guido本人看來(lái),ABC這種語(yǔ)言非常優(yōu)美和強(qiáng)大,是專門為非專業(yè)程序員設(shè)計(jì)的。但是ABC語(yǔ)言并沒(méi)有成功,究其原因,Guido認(rèn)為是其非開(kāi)放造成的。Guido決心在Python中避免這一錯(cuò)誤。同時(shí),他還想實(shí)現(xiàn)在ABC中閃現(xiàn)過(guò)但未曾實(shí)現(xiàn)的東西。
就這樣,Python在Guido手中誕生了??梢哉f(shuō),Python是從ABC發(fā)展起來(lái),主要受到了Modula-3(另一種相當(dāng)優(yōu)美且強(qiáng)大的語(yǔ)言,為小型團(tuán)體所設(shè)計(jì)的)的影響。并且結(jié)合了Unix shell和C的習(xí)慣。
匿名函數(shù) 簡(jiǎn)單的需要用函數(shù)去解決的問(wèn)題 匿名函數(shù)的函數(shù)體 只有一行 也叫l(wèi)ambda表達(dá)式
python 使用 lambda 來(lái)創(chuàng)建匿名函數(shù)。
lambda函數(shù)的語(yǔ)法只包含一個(gè)語(yǔ)句,如下:
等價(jià)于
在Python中,lambda函數(shù)是使用 lambda表達(dá)式 定義的單行 匿名函數(shù) 。它常用于將函數(shù)作為參數(shù)傳遞等場(chǎng)景。
lambda函數(shù)具有 lambda 參數(shù) : 表達(dá)式 的格式。它沒(méi)有函數(shù)名,函數(shù)體只有一條語(yǔ)句,這條語(yǔ)句的結(jié)果就是該函數(shù)的返回值。
如下的lambda函數(shù)被賦值給變量 func :
等價(jià)于如下普通定義的函數(shù) func(x, y, z) :
這樣定義的lambda函數(shù),調(diào)用形式與普通定義的函數(shù)一樣:
運(yùn)行結(jié)果:
當(dāng)我們?cè)趥魅牒瘮?shù)時(shí),有些時(shí)候,不需要顯式地定義函數(shù),直接傳入匿名函數(shù)更方便。
在Python中,對(duì)匿名函數(shù)提供了有限支持。還是以map()函數(shù)為例,計(jì)算f(x)=x2時(shí),除了定義一個(gè)f(x)的函數(shù)外,還可以直接傳入匿名函數(shù):
map(lambda?x:?x?*?x,?[1,?2,?3,?4,?5,?6,?7,?8,?9])
[1,?4,?9,?16,?25,?36,?49,?64,?81]
通過(guò)對(duì)比可以看出,匿名函數(shù)lambda x: x * x實(shí)際上就是:
def?f(x):
return?x?*?x
關(guān)鍵字lambda表示匿名函數(shù),冒號(hào)前面的x表示函數(shù)參數(shù)。
匿名函數(shù)有個(gè)限制,就是只能有一個(gè)表達(dá)式,不用寫return,返回值就是該表達(dá)式的結(jié)果。
用匿名函數(shù)有個(gè)好處,因?yàn)楹瘮?shù)沒(méi)有名字,不必?fù)?dān)心函數(shù)名沖突。此外,匿名函數(shù)也是一個(gè)函數(shù)對(duì)象,也可以把匿名函數(shù)賦值給一個(gè)變量,再利用變量來(lái)調(diào)用該函數(shù):
f?=?lambda?x:?x?*?x
f
function?lambda?at?0x10453d7d0
f(5)
25
同樣,也可以把匿名函數(shù)作為返回值返回,比如:
def?build(x,?y):
return?lambda:?x?*?x?+?y?*?y
小結(jié)
Python對(duì)匿名函數(shù)的支持有限,只有一些簡(jiǎn)單的情況下可以使用匿名函數(shù)。
希望能幫到你!