亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python學(xué)習(xí)筆記——lambda關(guān)鍵字、map、filter、reduce

系統(tǒng) 1760 0

在python中有一些有意思的內(nèi)置函數(shù),例如map()、filter()、reduce()函數(shù),總結(jié)一下加深理解。

  1. lambda關(guān)鍵字

  2. map函數(shù)

  3. filter函數(shù)

  4. sorted函數(shù)

  5. zip函數(shù)

以上四種函數(shù)均返回的是對(duì)象,需在外面加list并print才能顯示

一、lambda表達(dá)式:匿名函數(shù)


原文地址:https://www.cnblogs.com/hf8051/p/8085424.html

  1. lambda表達(dá)式,通常是在需要一個(gè)函數(shù),但是又 不想費(fèi)神去命名一個(gè)函數(shù)的場(chǎng)合下使用 ,也就是指匿名函數(shù)。

  2. lambda所表示的 匿名函數(shù)的內(nèi)容應(yīng)該是很簡(jiǎn)單的,如果復(fù)雜的話(huà),干脆就重新定義一個(gè)函數(shù) 了,使用lambda就有點(diǎn)過(guò)于本末倒置了。

  3. lambda就是用來(lái)定義一個(gè)匿名函數(shù)的,如果還要給他綁定一個(gè)名字的話(huà),就會(huì)顯得有點(diǎn)畫(huà)蛇添足,通常是直接使用lambda函數(shù)

表達(dá)形式: lambda param1,…:return_value
和param相當(dāng)于定義函數(shù) 時(shí)候傳入的形參,return_value相當(dāng)于return后面的值

1、應(yīng)用在函數(shù)式編程中

像map、reduce、sorted、filter函數(shù)都支持函數(shù)作為參數(shù),可以在其中嵌套使用,非常清晰明了。

            
              # 需求:將列表中的元素按照絕對(duì)值大小進(jìn)行升序排列
list1 = [3,5,-4,-1,0,-2,-6]
sorted(list1, key=lambda x: abs(x))

            
          

當(dāng)然,也可以如下:

            
               list1 
              
                =
              
              
                [
              
              
                3
              
              
                ,
              
              
                5
              
              
                ,
              
              
                -
              
              
                4
              
              
                ,
              
              
                -
              
              
                1
              
              
                ,
              
              
                0
              
              
                ,
              
              
                -
              
              
                2
              
              
                ,
              
              
                -
              
              
                6
              
              
                ]
              
              
                def
              
              
                get_abs
              
              
                (
              
              x
              
                )
              
              
                :
              
              
                return
              
              
                abs
              
              
                (
              
              x
              
                )
              
              
                sorted
              
              
                (
              
              list1
              
                ,
              
              key
              
                =
              
              get_abs
              
                )
              
            
          

只不過(guò)這種方式的代碼看起來(lái)不夠Pythonic

2、應(yīng)用在閉包中

            
              
                def
              
              
                get_y
              
              
                (
              
              a
              
                ,
              
              b
              
                )
              
              
                :
              
              
                return
              
              
                lambda
              
               x
              
                :
              
              ax
              
                +
              
              b
y1 
              
                =
              
               get_y
              
                (
              
              
                1
              
              
                ,
              
              
                1
              
              
                )
              
            
          

當(dāng)然,也可以用常規(guī)函數(shù)實(shí)現(xiàn)閉包,如下:

            
              
                def
              
              
                get_y
              
              
                (
              
              a
              
                ,
              
              b
              
                )
              
              
                :
              
              
                def
              
              
                func
              
              
                (
              
              x
              
                )
              
              
                :
              
              
                return
              
               ax
              
                +
              
              b
    
              
                return
              
               func
y1 
              
                =
              
               get_y
              
                (
              
              
                1
              
              
                ,
              
              
                1
              
              
                )
              
            
          

二、map函數(shù):


功能 : 求一個(gè)序列或者多個(gè)序列進(jìn)行函數(shù)映射之后的值,就該想到map這個(gè)函數(shù)

語(yǔ)法 map(function, iterable)
接收兩個(gè)參數(shù),第一個(gè)為函數(shù),第二個(gè)為序列,序列的每個(gè)元素執(zhí)行函數(shù)操作,并傳入新的map對(duì)象中。

參數(shù)

  1. function:用def或用lambda定義。
  2. iterable:一個(gè)或多個(gè)可迭代的對(duì)象,可以是字符串、列表、字典。

因?yàn)榉祷氐氖且粋€(gè)map對(duì)象,所以不能直接輸出,可以在其外面套上list()來(lái)顯示或者通過(guò)for循環(huán)append顯示。

通過(guò)例子加深理解

            
              
                def
              
              
                square
              
              
                (
              
              x
              
                )
              
              
                :
              
              
                return
              
               x
              
                *
              
              x
a
              
                =
              
              
                list
              
              
                (
              
              
                map
              
              
                (
              
              square
              
                ,
              
              
                [
              
              
                1
              
              
                ,
              
              
                2
              
              
                ,
              
              
                3
              
              
                ]
              
              
                )
              
              
                )
              
              
                print
              
              
                (
              
              a
              
                )
              
              
                #上下兩段代碼相等
              
              

a 
              
                =
              
              
                list
              
              
                (
              
              
                map
              
              
                (
              
              
                lambda
              
               x
              
                :
              
              x
              
                **
              
              
                2
              
              
                ,
              
              
                [
              
              
                1
              
              
                ,
              
              
                2
              
              
                ,
              
              
                3
              
              
                ]
              
              
                )
              
              
                )
              
              
                print
              
              
                (
              
              a
              
                )
              
            
          

輸出結(jié)果 :[1, 4, 9]

map,不止能傳入一個(gè)可迭代對(duì)象做為參數(shù)。也可以傳入兩個(gè)
            
              ls1
              
                =
              
              
                'ABC'
              
              
ls2
              
                =
              
              
                'abc'
              
              
                print
              
              
                (
              
              
                list
              
              
                (
              
              
                map
              
              
                (
              
              
                lambda
              
               x
              
                ,
              
              y
              
                :
              
              x
              
                +
              
              y
              
                ,
              
              ls1
              
                ,
              
              ls2
              
                )
              
              
                )
              
              
                )
              
            
          

輸出結(jié)果:[‘Aa’, ‘Bb’, ‘Cc’]

三、filter函數(shù)


功能 :filter的功能是過(guò)濾掉序列中不符合函數(shù)條件的元素,當(dāng)序列中要?jiǎng)h減的元素可以用某些函數(shù)描述時(shí),就應(yīng)該想起filter函數(shù)。

語(yǔ)法 :filter(function, iterable)

接收兩個(gè)參數(shù),第一個(gè)為函數(shù),第二個(gè)為序列,序列的每個(gè)元素作為參數(shù)傳遞給函數(shù)進(jìn)行判斷,返回True或False,將返回True的元素放到filter對(duì)象中。

參數(shù)

  1. function def或lambda定義
  2. iterable 元組、字符串、字典、列表

因?yàn)榉祷氐氖且粋€(gè)對(duì)象,所以不能直接輸出,可以在其外面套上list()來(lái)顯示

            
              a 
              
                =
              
              
                list
              
              
                (
              
              
                filter
              
              
                (
              
              
                lambda
              
               x :x
              
                %
              
              
                2
              
              
                ==
              
              
                0
              
                [
              
              
                1
              
              
                ,
              
              
                2
              
              
                ,
              
              
                3
              
              
                ,
              
              
                4
              
              
                ]
              
              
                )
              
              
                )
              
              
                print
              
              
                (
              
              a
              
                )
              
            
          

輸出結(jié)果:[2,4]

四、sorted函數(shù)


原文地址:https://www.cnblogs.com/sysu-blackbear/p/3283993.html
功能 :對(duì)List、Dict進(jìn)行排序
語(yǔ)法 : sorted(iterable, cmp=None, key=None, reverse=False)
參數(shù)
iterable:迭代對(duì)象;
cmp:用于比較的函數(shù),比較什么由key決定;
key:用列表元素的某個(gè)屬性或函數(shù)進(jìn)行作為關(guān)鍵字,有默認(rèn)值,迭代集合中的一項(xiàng);
reverse:排序規(guī)則. reverse = True 降序 或者 reverse = False 升序,有默認(rèn)值。
返回值:是一個(gè)經(jīng)過(guò)排序的可迭代類(lèi)型,與iterable一樣。

五、zip函數(shù)

功能 :zip() 函數(shù)用于將可迭代對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組,然后返回由這些元組組成的對(duì)象。
如果各個(gè)可迭代對(duì)象的元素 個(gè)數(shù)不一致 ,則返回的對(duì)象長(zhǎng)度與 最短的可迭代對(duì)象 相同。
利用 * 號(hào)操作符,與zip相反,進(jìn)行解壓。

語(yǔ)法 : zip(iterable1,iterable2, …)

參數(shù) :iterable – 一個(gè)或多個(gè)可迭代對(duì)象(字符串、列表、元祖、字典)

            
              
                >>
              
              
                >
              
               a 
              
                =
              
              
                [
              
              
                1
              
              
                ,
              
              
                2
              
              
                ,
              
              
                3
              
              
                ]
              
              
                #此處可迭代對(duì)象為列表
              
              
                >>
              
              
                >
              
               b 
              
                =
              
              
                [
              
              
                4
              
              
                ,
              
              
                5
              
              
                ,
              
              
                6
              
              
                ]
              
              
                >>
              
              
                >
              
               c 
              
                =
              
              
                [
              
              
                4
              
              
                ,
              
              
                5
              
              
                ,
              
              
                6
              
              
                ,
              
              
                7
              
              
                ,
              
              
                8
              
              
                ]
              
              
                >>
              
              
                >
              
               zipped 
              
                =
              
              
                zip
              
              
                (
              
              a
              
                ,
              
              b
              
                )
              
              
                >>
              
              
                >
              
               zipped

              
                <
              
              
                zip
              
              
                object
              
               at 
              
                0x02B01B48
              
              
                >
              
              
                #返回的是一個(gè)對(duì)象
              
              
                >>
              
              
                >
              
              
                list
              
              
                (
              
              zipped
              
                )
              
              
                [
              
              
                (
              
              
                1
              
              
                ,
              
              
                4
              
              
                )
              
              
                ,
              
              
                (
              
              
                2
              
              
                ,
              
              
                5
              
              
                )
              
              
                ,
              
              
                (
              
              
                3
              
              
                ,
              
              
                6
              
              
                )
              
              
                ]
              
              
                #使用list()函數(shù)轉(zhuǎn)換為列表
              
              
                >>
              
              
                >
              
              
                list
              
              
                (
              
              
                zip
              
              
                (
              
              a
              
                ,
              
              c
              
                )
              
              
                )
              
              
                [
              
              
                (
              
              
                1
              
              
                ,
              
              
                4
              
              
                )
              
              
                ,
              
              
                (
              
              
                2
              
              
                ,
              
              
                5
              
              
                )
              
              
                ,
              
              
                (
              
              
                3
              
              
                ,
              
              
                6
              
              
                )
              
              
                ]
              
              
                >>
              
              
                >
              
               zipped 
              
                =
              
              
                zip
              
              
                (
              
              a
              
                ,
              
              b
              
                )
              
              
                >>
              
              
                >
              
              
                list
              
              
                (
              
              
                zip
              
              
                (
              
              
                *
              
              zipped
              
                )
              
              
                )
              
              
                #解壓也使用list進(jìn)行轉(zhuǎn)換
              
              
                [
              
              
                (
              
              
                1
              
              
                ,
              
              
                2
              
              
                ,
              
              
                3
              
              
                )
              
              
                ,
              
              
                (
              
              
                4
              
              
                ,
              
              
                5
              
              
                ,
              
              
                6
              
              
                )
              
              
                ]
              
            
          

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: www一级片| 亚洲一区二区视频在线观看 | 一区二区三区四区在线视频 | 国产亚洲精品中文带字幕21页 | 亚洲日本一区二区三区在线不卡 | 毛片免费观看久久欧美 | 免费国产免费福利视频 | 精品视频在线免费看 | 在线免费视频国产 | 免费网站成人亚洲 | 国产一级一级一级成人毛片 | 99这里只有精品6 | 美女视频黄的全i免费 | 久久综合九色婷婷97 | 波多野结衣久久精品 | 天堂福利视频 | 国产精品久久网 | 亚洲黄色片视频 | 老扒夜夜春宵粗大好爽aa毛片 | 久久精品国产一区二区 | 日本欧美小视频 | 成人欧美一区二区三区在线 | 久久福利网站 | ww亚洲ww在线观看国产 | 亚洲最大在线视频 | 99j久久精品久久久久久 | 神马我不卡在线观看 | 国产视频在线播放 | 色综合天天综合网看在线影院 | 国产做爰免费视频观看 | 中国第一毛片 | 欧美在线小视频 | 日韩美一区二区三区 | 亚洲精品中文字幕乱码三区一二 | 看真人一级毛多毛片 | 亚洲一级理论片 | 久久99影院| 婷婷色婷婷 | 成人精品国产亚洲 | 色婷婷久久综合中文久久一本 | 国产香蕉一区二区精品视频 |