<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          lambda匿名函數(shù)超詳細(xì)總結(jié)

          共 2743字,需瀏覽 6分鐘

           ·

          2021-04-29 06:10



          大家好,歡迎來到 Crossin的編程教室 !

          這幾天,有同學(xué)在答疑群里問,能不能講解一下lambda函數(shù)的使用?
          今天我們就來分享一篇文章,給大家總結(jié)下lambda函數(shù)的相關(guān)知識(shí)點(diǎn)。
          lambda函數(shù)又叫做“匿名函數(shù)”。當(dāng)你需要完成一件小工作時(shí),直接使用該函數(shù)可以讓你的工作得心應(yīng)手。下面我們將通過一些例子具體說明。

          1. lambda函數(shù)介紹

          在Python中,定義函數(shù)使用的是def關(guān)鍵字,并要提供一個(gè)函數(shù)名稱。但是通過lambda關(guān)鍵字來定義的函數(shù)不需要提供名稱,因此稱之為“匿名函數(shù)”。
          函數(shù)的語法如下:
          • lambda 參數(shù): 表達(dá)式
          函數(shù)用法如下:
          • ①先寫lambda關(guān)鍵字,②然后依次寫匿名函數(shù)的參數(shù),多個(gè)參數(shù)之間用逗號(hào)連接,③接著是一個(gè)冒號(hào),④冒號(hào)后面寫的是返回的表達(dá)式。
          需要注意以下幾點(diǎn):
          • lambda函數(shù)能接收任意多個(gè)參數(shù),但只能返回一個(gè)表達(dá)式的值;
          • lambda函數(shù)是一個(gè)函數(shù)對象,如果直接賦值給一個(gè)變量,這個(gè)變量就成了一個(gè)函數(shù)對象;
          當(dāng)待處理的業(yè)務(wù)符合匿名函數(shù)的特點(diǎn):多個(gè)參數(shù)和一個(gè)返回值,并且該函數(shù)只在一個(gè)地方使用,不在其他地方復(fù)用,建議使用lambda函數(shù)。

          2. lambda函數(shù)的簡單使用

          下面我們寫個(gè)例子:帶有一個(gè)參數(shù)的匿名函數(shù)。
          In[1]:lambda x: x + 2
          Out[1]:<function __main__.<lambda>(x)>
          接著,使用type()函數(shù)打印該函數(shù)的類型,得到的是一個(gè)function函數(shù)對象。
          In[1]:type(lambda x: x + 2)
          Out[1]:function
          我們可以使用第一種方式:直接調(diào)用匿名函數(shù),但是顯得有點(diǎn)別扭。
          注意:通過這種方式調(diào)用匿名函數(shù),匿名函數(shù)和實(shí)參都需要用括號(hào)括起來。
          In[1]:(lambda x: x + 2 )(2)
          Out[1]:4
          當(dāng)然我們也可以使用第二種方式(強(qiáng)烈建議),將匿名函數(shù)傳遞給一個(gè)參數(shù),調(diào)用匿名函數(shù)。
          注意:通過這種方式調(diào)用匿名函數(shù),變量名+括號(hào)。
          In[1]:a = lambda x: x + 2
                a(2)
          Out[1]:4

          3. lambda函數(shù)的不同形式

          lambda函數(shù)中可以不傳參數(shù),可以傳遞一個(gè)參數(shù),二個(gè)參數(shù),或者傳遞多個(gè)參數(shù)。
          3.1 無參數(shù)的lambda函數(shù)
          不管是有參數(shù)還是無參數(shù),調(diào)用一定是變量名+括號(hào),即這個(gè)括號(hào)不能省略,否則返回的是一個(gè)function函數(shù)對象。
          In[1]:x1 = lambda88
          print(x1())
          結(jié)果如下:
          3.2 單參數(shù)的lambda函數(shù)
          單參數(shù)指的是匿名函數(shù)中只有一個(gè)參數(shù),下面來看一個(gè)例子。
          In[1]:b = lambda x: x + 2
          print(b(8))
          結(jié)果如下:
          3.3 多參數(shù)的lambda函數(shù)
          多參數(shù)指的是匿名函數(shù)中有多個(gè)參數(shù),下面來看一個(gè)例子。
          In[1]:c = lambda x,y: x*y
          print(c(2,5))
          結(jié)果如下:
          3.4 帶分支的lambda函數(shù)
          有時(shí)候我們可以根據(jù)給定的參數(shù),來判斷接下來需要做什么,這就需要匿名函數(shù)結(jié)合分支表達(dá)式使用了。
          In[1]:d = lambda x: x-1 if x > 5 else x+1
          print(d(9))
          print(d(3))
          結(jié)果如下:

          4. lambda函數(shù)與Python內(nèi)置函數(shù)配合使用

          其實(shí)lambda函數(shù)更多的時(shí)候是與sorted函數(shù),map函數(shù)和filter函數(shù)等聯(lián)合使用。這里以sorted函數(shù)為例進(jìn)行舉例說明。
          4.1 對列表里的字典排序
          l = [{'a'1'b'41}, {'a'1111'b'24}, {'a'1111'b'32}]
          l_s = sorted(l, key=lambda x: x["b"], reverse=True)
          print(l_s)
          結(jié)果如下:
          4.2 對字典進(jìn)行key排序
          m = {'a':25'c':27'b':20'd':22}
          m_s = sorted(m.items(), key=lambda x: x[0])
          print(m_s)
          結(jié)果如下:
          4.3 對字典進(jìn)行values排序
          n = {'a':25'c':27'b':20'd':22}
          n_s = sorted(n.items(), key=lambda x: x[1])
          print(n_s)
          結(jié)果如下:
          4.4 其它用法
          list(map(lambda x: x*x, range(111)))
          list(filter(lambda x: x % 2 == 0, range(111)))
          結(jié)果如下:

          以上便是 lambda 匿名函數(shù)的相關(guān)知識(shí)點(diǎn)和常見用法。大家可以自己嘗試寫一寫,熟悉lambda的用法。用好它,會(huì)讓你的代碼看起來更加簡潔,更加pythonic。
          如果文章對你有幫助,歡迎轉(zhuǎn)發(fā)/點(diǎn)贊/收藏~

          作者:黃偉呢

          來源:數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)之美


          _往期文章推薦_

          【Python 第70課】lambda表達(dá)式




          如需了解付費(fèi)精品課程教學(xué)答疑服務(wù)
          請?jiān)?strong style="max-width: 100%;overflow-wrap: break-word !important;box-sizing: border-box !important;">Crossin的編程教室內(nèi)回復(fù): 666

          瀏覽 146
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91A视频 | 亚洲操逼123 | 天天射天天日天天干 | 亚洲无码高清在线免费观看 | 操逼av在线 |