0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在Python中為什么使用lambda

jf_78858299 ? 來源:人工智能知識(shí)分享 ? 作者:人工智能知識(shí)分享 ? 2023-04-03 11:44 ? 次閱讀

通常來說,lambda起到了一種函數(shù)速寫的作用,允許在使用的代碼內(nèi)嵌入一個(gè)函數(shù)的定義。在你僅需要嵌入小段可執(zhí)行代碼的情況下它們會(huì)帶來一個(gè)更簡潔的代碼結(jié)構(gòu)。

lambda通常用來編寫跳轉(zhuǎn)表(jump table),也就是行為的列表或字典,能夠按照需要執(zhí)行相應(yīng)的動(dòng)作。如下段代碼所示。

L = [lambda x: x ** 2, # Inline function definition

lambda x: x ** 3,

 lambda x: x ** 4]         # A list of 3 callable functions

for f in L:

print(f(2))                # Prints 4,8,16

print(L[0](3)) # Prints 9

當(dāng)需要把小段的可執(zhí)行代碼編寫進(jìn)def語句從語法上不能編寫進(jìn)的地方時(shí),lambda表達(dá)式作為def的一種速寫來說是最為有用的。例如,上面的代碼片段,通過在列表常量中嵌入lambda表達(dá)式創(chuàng)建一個(gè)含有三個(gè)函數(shù)的列表。對(duì)等的def代碼可能需要在想要使用的環(huán)境之外有臨時(shí)性函數(shù)名稱和函數(shù)定義。

def f1(x): return x ** 2

def f2(x): return x ** 3 # Define named functions

def f3(x): return x ** 4

L = [f1,f2,f3] # Reference by name

for f in L:

print(f(2))                # Prints 4,8,16

print(L[0](3)) # Prints 9

實(shí)際上,我們可以用Python中的字典或者其他的數(shù)據(jù)結(jié)構(gòu)來構(gòu)建更多種類的行為表,從而做同樣的事情。下面給出另一個(gè)例子:

key = 'got'

{'already': (lambda: 2 + 2),

...'got': (lambda: 2 * 4),

...'one': (lambda: 2 ** 6)}[key]

name

for f in L:

print(f(2))                # Prints 4,8,16

print(L[0](3)) # Prints 9

這里,當(dāng)Python創(chuàng)建這個(gè)字典的時(shí)候,每個(gè)嵌套的lambda都生成并留下了一個(gè)在之后能夠調(diào)用的函數(shù)。如果不是用lambda做這種工作,需要使用三個(gè)文件中其他地方出現(xiàn)過的def語句來替代,也就是在這些函數(shù)將會(huì)使用的那個(gè)字典外的某處需要定義這些函數(shù)。

def f1(): return 2 + 2...

def f2(): return 2 * 4

...

def f3(): return 2 ** 6

...

key = 'one'

{'already': f1,'got': f2,'one': f3}[key]()

64

同樣,上面代碼會(huì)實(shí)現(xiàn)相同的功能,但是def也許會(huì)出現(xiàn)在文件中的任意位置,即使它們只有很少的代碼。類似剛才lambda的代碼,提供了一種特別有用的可以在單個(gè)情況出現(xiàn)的函數(shù):如果這里的三個(gè)函數(shù)不會(huì)在其他的地方使用到,那么將它們的定義作為lambda嵌入在字典中就是很合理的了。不僅如此,def格式要求為這些小函數(shù)創(chuàng)建變量名,這些變量名也許會(huì)與這個(gè)文件中的其他變量名發(fā)生沖突。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4331

    瀏覽量

    62629
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4788

    瀏覽量

    68625
  • Lambda
    +關(guān)注

    關(guān)注

    0

    文章

    29

    瀏覽量

    9879
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Python面試必看的10個(gè)問題

    :delaelse:last=aprint(a)10、下面的代碼Python2的輸出是什么?解釋你的答案defdiv1(x,y): print "%s/%s = %s" % (x
    發(fā)表于 02-28 17:00

    lambda函數(shù)基礎(chǔ)

    lambda函數(shù)基礎(chǔ)lambda與def
    發(fā)表于 12-29 06:22

    python匿名函數(shù)的使用

    ,為什么今天我們要介紹它呢?首先我們要知道 lambda 是一個(gè)表達(dá)式,而不是一個(gè)語句。正因?yàn)檫@個(gè)特點(diǎn),我們可以一些特殊的場景中去使用它。
    發(fā)表于 03-02 16:42

    python高階函數(shù)

    注意的是,以上示例是 Python2.x 環(huán)境下演示的。而在 Python3.x ,卻有所不同,你可以自己嘗試一下。這里總結(jié)一下:第一點(diǎn),map 和 filter 函數(shù)返回的都不再
    發(fā)表于 03-02 16:47

    LAMBDA算法衛(wèi)星導(dǎo)航定位的應(yīng)用研究

    衛(wèi)星導(dǎo)航定位,基于載波相位觀測(cè)值的RTK定位技術(shù)能夠達(dá)到厘米級(jí)的定位精度,其核心技術(shù)是整周模糊度的快速解算。采用LAMBDA方法能快速解算整周模糊度完成初始化,實(shí)時(shí)周跳檢
    發(fā)表于 07-06 16:39 ?22次下載

    簡潔編寫Python 語法的7種技巧分享

    Python 是一門用途廣泛、易讀、而且容易入門的編程語言。但同時(shí) python 語法也允許我們做一些很奇怪的事情。 1、使用 lambda 表達(dá)式重寫多行函數(shù) 眾所周知 python
    的頭像 發(fā)表于 12-20 11:03 ?836次閱讀

    Anaconda安裝python包seaborn

    Anaconda安裝python包seaborn(現(xiàn)代電源技術(shù)題庫)-Anaconda安裝pyt
    發(fā)表于 09-18 15:01 ?5次下載
    <b class='flag-5'>在</b>Anaconda<b class='flag-5'>中</b>安裝<b class='flag-5'>python</b>包seaborn

    抽樣Python是如何實(shí)現(xiàn)的

    今天來和大家聊聊抽樣的幾種常用方法,以及Python是如何實(shí)現(xiàn)的。
    的頭像 發(fā)表于 08-05 10:59 ?1212次閱讀

    推薦一個(gè)Python超級(jí)好用的內(nèi)置函數(shù)lambda

    Python當(dāng)中,我們經(jīng)常使用lambda關(guān)鍵字來聲明一個(gè)匿名函數(shù),所謂地匿名函數(shù),通俗地來講就是沒有名字的函數(shù)。
    的頭像 發(fā)表于 09-13 18:09 ?1017次閱讀
    推薦一個(gè)<b class='flag-5'>Python</b>超級(jí)好用的內(nèi)置函數(shù)<b class='flag-5'>lambda</b>

    Lambda表達(dá)式詳解

    C++11Lambda表達(dá)式用于 **定義并創(chuàng)建匿名的函數(shù)對(duì)象** ,以簡化編程工作。下面看一下Lambda表達(dá)式的基本構(gòu)成。
    的頭像 發(fā)表于 02-09 11:28 ?1170次閱讀

    PythonLambda表達(dá)式

    Python ,Lambda 表達(dá)式是一種非常強(qiáng)大的工具,它可以讓你快速創(chuàng)建小型匿名函數(shù),而不需要顯式地定義函數(shù)名稱。Lambda
    的頭像 發(fā)表于 04-19 15:49 ?827次閱讀

    網(wǎng)絡(luò)工程師學(xué)Python-Lambda表達(dá)式

    Python ,Lambda 表達(dá)式是一種非常強(qiáng)大的工具,它可以讓你快速創(chuàng)建小型匿名函數(shù),而不需要顯式地定義函數(shù)名稱。Lambda
    的頭像 發(fā)表于 04-19 15:51 ?912次閱讀

    什么是Lambda函數(shù)

    和 map() 方法的聯(lián)用 lambda 函數(shù)和 apply() 方法的聯(lián)用 什么時(shí)候不適合使用 lambda 方法 什么是 Lambda 函數(shù)
    的頭像 發(fā)表于 10-17 11:27 ?1194次閱讀

    PythonAI的應(yīng)用實(shí)例

    Python人工智能(AI)領(lǐng)域的應(yīng)用極為廣泛且深入,從基礎(chǔ)的數(shù)據(jù)處理、模型訓(xùn)練到高級(jí)的應(yīng)用部署,Python都扮演著至關(guān)重要的角色。以下將詳細(xì)探討Python
    的頭像 發(fā)表于 07-19 17:16 ?1102次閱讀

    亞馬遜云科技推出Amazon Lambda SnapStart功能

    亞馬遜云科技推出Amazon Lambda SnapStart,大幅提升Java Lambda函數(shù)啟動(dòng)性能   北京,2024年10月29日 —— 亞馬遜云科技近日宣布,與光環(huán)新網(wǎng)和西云數(shù)據(jù)
    的頭像 發(fā)表于 10-30 10:59 ?260次閱讀