欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Python匿名函數(shù)(lambda函數(shù))

 更新時(shí)間:2019年04月19日 11:46:17   作者:luckycyong  
這篇文章主要介紹了Python匿名函數(shù)(lambda函數(shù)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

匿名函數(shù)lambda

Python使用lambda關(guān)鍵字創(chuàng)造匿名函數(shù)。所謂匿名,意即不再使用def語(yǔ)句這樣標(biāo)準(zhǔn)的形式定義一個(gè)函數(shù)。這種語(yǔ)句的目的是由于性能的原因,在調(diào)用時(shí)繞過(guò)函數(shù)的棧分配。其語(yǔ)法是:

lambda [arg1[, arg2, ... argN]]: expression

其中,參數(shù)是可選的,如果使用參數(shù)的話,參數(shù)通常也會(huì)在表達(dá)式之中出現(xiàn)。

下面舉例來(lái)說(shuō)明lambda語(yǔ)句的使用方法(無(wú)參數(shù))。

# 使用def定義函數(shù)的方法
def true():
  return True

#等價(jià)的lambda表達(dá)式
>>> lambda :True
<function <lambda> at 0x0000000001E42518>

# 保留lambda對(duì)象到變量中,以便隨時(shí)調(diào)用
>>> true = lambda :True
>>> true()
True

下面再舉一個(gè)帶參數(shù)的例子。

# 使用def定義的函數(shù)
def add( x, y ):
  return x + y

# 使用lambda的表達(dá)式
lambda x, y: x + y

# lambda也允許有默認(rèn)值和使用變長(zhǎng)參數(shù)
lambda x, y = 2: x + y
lambda *z: z

# 調(diào)用lambda函數(shù)
>>> a = lambda x, y: x + y
>>> a( 1, 3 )
4
>>> b = lambda x, y = 2: x + y
>>> b( 1 )
3
>>> b( 1, 3 )
4
>>> c = lambda *z: z
>>> c( 10, 'test')
(10, 'test')

但由于lambda表達(dá)式特殊的設(shè)計(jì),在特定的場(chǎng)景中也帶來(lái)了一些不同的體驗(yàn)。

lambda是一個(gè)表達(dá)式,不是一個(gè)語(yǔ)句 這就使它能夠出現(xiàn)在一些def不能出現(xiàn)的地方,比如,列表常量中。

lambda是單個(gè)的表達(dá)式,不是一個(gè)代碼塊 lambda的設(shè)計(jì)是為了滿足簡(jiǎn)單函數(shù)的場(chǎng)景,僅能封裝有限的邏輯,有復(fù)雜邏輯的情況有def來(lái)處理,所以lambda的功能要比def小的多。

另外,lambda表達(dá)式是可以嵌套的

>>> action = (lambda x : (lambda y : x + y))
>>> a = action(10)
>>> a(5)
15

這就是一個(gè)用lambda實(shí)現(xiàn)的閉包,與普通閉包一樣,內(nèi)嵌lambda表達(dá)式可以獲得上層lambda函數(shù)的變量。

匿名函數(shù)的使用

匿名函數(shù)通常被用作高階函數(shù)(higher-order function,參數(shù)為函數(shù)的函數(shù))的參數(shù)。比如,幾個(gè)內(nèi)置函數(shù):filter(),map(),reduce()。下面我們分別看看這幾個(gè)函數(shù)的用法及達(dá)到相同效果的python另一種特征的用法

filter函數(shù)

>>> list = [1, 2, 3]
>>> result = filter(lambda x: x%2==0, list)
>>> result
[2]
>>> result = [x for x in list if x%2==0]
>>> result
[2]

map函數(shù)

>>> result = map(lambda x: x*2, list)
>>> result
[2, 4, 6]
>>> result = [x*2 for x in list]
>>> result
[2, 4, 6]

reduce函數(shù)

>>> result = reduce(lambda x, y: x+y,list)
>>> result
6
>>> result = sum(list)
>>> result
6

除reduce函數(shù)的替代用法比較特殊外,map和filter函數(shù)都可以使用列表推導(dǎo)式(list comprehension)代替。據(jù)說(shuō),當(dāng)年lambda是一個(gè)Lisp程序員給python加的,而Guido是強(qiáng)烈反對(duì)的,他中意的是列表推導(dǎo)式。

跳轉(zhuǎn)表(jump table)

lambda的另一種用法是用來(lái)編寫跳轉(zhuǎn)表,也就是行為列表或字典,能按需執(zhí)行特定的動(dòng)作。

>>> key = "get"
>>> {"abc":(lambda : 2 + 2),"bcd" : (lambda : 3 + 3), "get" : (lambda : 4 + 4)}[key]()
8

這樣在字典中,每個(gè)lambda都留下了一個(gè)后續(xù)可以調(diào)用的函數(shù),通過(guò)索引可以取出來(lái),并調(diào)用。這就使字段可以成為更加通用的多路分支工具。

以上所述是小編給大家介紹的Python匿名函數(shù)(lambda函數(shù))詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 詳解Python中如何寫控制臺(tái)進(jìn)度條的整理

    詳解Python中如何寫控制臺(tái)進(jìn)度條的整理

    這篇文章主要介紹了詳解Python中如何寫控制臺(tái)進(jìn)度條的整理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • 解讀MaxPooling1D和GlobalMaxPooling1D的區(qū)別

    解讀MaxPooling1D和GlobalMaxPooling1D的區(qū)別

    這篇文章主要介紹了MaxPooling1D和GlobalMaxPooling1D的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python 使用 consul 做服務(wù)發(fā)現(xiàn)示例詳解

    Python 使用 consul 做服務(wù)發(fā)現(xiàn)示例詳解

    這篇文章主要介紹了Python 使用 consul 做服務(wù)發(fā)現(xiàn)示例詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Python中求對(duì)數(shù)方法總結(jié)

    Python中求對(duì)數(shù)方法總結(jié)

    這篇文章主要介紹了Python中求對(duì)數(shù)方法總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 如何使用pandas對(duì)超大csv文件進(jìn)行快速拆分詳解

    如何使用pandas對(duì)超大csv文件進(jìn)行快速拆分詳解

    Pandas是Python語(yǔ)言的一個(gè)擴(kuò)展程序庫(kù),提供高性能、易于使用的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具,下面這篇文章主要給大家介紹了關(guān)于如何使用pandas對(duì)超大csv文件進(jìn)行快速拆分的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • python中定時(shí)器的高級(jí)使用方式詳解

    python中定時(shí)器的高級(jí)使用方式詳解

    在Python編程中,定時(shí)器是一種非常有用的工具,用于執(zhí)行特定任務(wù)或函數(shù),本文將介紹一些高級(jí)的定時(shí)器使用方式,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • Python 獲取命令行參數(shù)內(nèi)容及參數(shù)個(gè)數(shù)的實(shí)例

    Python 獲取命令行參數(shù)內(nèi)容及參數(shù)個(gè)數(shù)的實(shí)例

    今天小編就為大家分享一篇Python 獲取命令行參數(shù)內(nèi)容及參數(shù)個(gè)數(shù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • 如何查看Django ORM執(zhí)行的SQL語(yǔ)句的實(shí)現(xiàn)

    如何查看Django ORM執(zhí)行的SQL語(yǔ)句的實(shí)現(xiàn)

    這篇文章主要介紹了如何查看Django ORM執(zhí)行的SQL語(yǔ)句的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 在Ubuntu系統(tǒng)下安裝使用Python的GUI工具wxPython

    在Ubuntu系統(tǒng)下安裝使用Python的GUI工具wxPython

    這篇文章主要介紹了在Ubuntu系統(tǒng)下安裝使用Python的GUI工具wxPython的方法,wxPython可以為Python提供強(qiáng)大的圖形化界面開(kāi)發(fā)支持,需要的朋友可以參考下
    2016-02-02
  • python re模塊的高級(jí)用法詳解

    python re模塊的高級(jí)用法詳解

    這篇文章較詳細(xì)的給大家介紹了python re模塊的高級(jí)用法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-06-06

最新評(píng)論