欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python學習筆記——lambda關鍵字、map、filter、reduce

系統 1638 0

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

  1. lambda關鍵字

  2. map函數

  3. filter函數

  4. sorted函數

  5. zip函數

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

一、lambda表達式:匿名函數


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

  1. lambda表達式,通常是在需要一個函數,但是又 不想費神去命名一個函數的場合下使用 ,也就是指匿名函數。

  2. lambda所表示的 匿名函數的內容應該是很簡單的,如果復雜的話,干脆就重新定義一個函數 了,使用lambda就有點過于本末倒置了。

  3. lambda就是用來定義一個匿名函數的,如果還要給他綁定一個名字的話,就會顯得有點畫蛇添足,通常是直接使用lambda函數

表達形式: lambda param1,…:return_value
和param相當于定義函數 時候傳入的形參,return_value相當于return后面的值

1、應用在函數式編程中

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

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

            
          

當然,也可以如下:

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

只不過這種方式的代碼看起來不夠Pythonic

2、應用在閉包中

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

當然,也可以用常規函數實現閉包,如下:

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

二、map函數:


功能 : 求一個序列或者多個序列進行函數映射之后的值,就該想到map這個函數

語法 map(function, iterable)
接收兩個參數,第一個為函數,第二個為序列,序列的每個元素執行函數操作,并傳入新的map對象中。

參數

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

因為返回的是一個map對象,所以不能直接輸出,可以在其外面套上list()來顯示或者通過for循環append顯示。

通過例子加深理解

            
              
                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
              
                )
              
            
          

輸出結果 :[1, 4, 9]

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

輸出結果:[‘Aa’, ‘Bb’, ‘Cc’]

三、filter函數


功能 :filter的功能是過濾掉序列中不符合函數條件的元素,當序列中要刪減的元素可以用某些函數描述時,就應該想起filter函數。

語法 :filter(function, iterable)

接收兩個參數,第一個為函數,第二個為序列,序列的每個元素作為參數傳遞給函數進行判斷,返回True或False,將返回True的元素放到filter對象中。

參數

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

因為返回的是一個對象,所以不能直接輸出,可以在其外面套上list()來顯示

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

輸出結果:[2,4]

四、sorted函數


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

五、zip函數

功能 :zip() 函數用于將可迭代對象作為參數,將對象中對應的元素打包成一個個元組,然后返回由這些元組組成的對象。
如果各個可迭代對象的元素 個數不一致 ,則返回的對象長度與 最短的可迭代對象 相同。
利用 * 號操作符,與zip相反,進行解壓。

語法 : zip(iterable1,iterable2, …)

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

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

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

更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美一级大片免费观看 | 欧美一区二区免费 | 加勒比精品久久一区二区三区 | 国产免费又色又爽又黄的网站 | 成人片网址 | 麻豆精品传媒一二三区在线视频 | 亚洲人xxxx| 国产亚洲欧美日本一二三本道 | 操人视频在线观看 | 午夜视频在线观看免费观看在线观看 | 国产精品视频免费播放 | 免费人成在线播放 | 国产成人无码区免费内射一片色欲 | 精品国产成人 | 欧美精品综合 | 亚洲第一成年免费网站 | 国产精品无码永久免费888 | 国产高清性xxxxxxxx | 成人毛片18岁女人毛片免费看 | 五月婷婷激情六月 | 国产一区在线免费观看 | 99热综合 | 婷婷开心六月久久综合丁香 | 激情五月色婷婷在线观看 | 耽美男男肉文 | 香港午夜三级a三级高清观看 | 九色在线观看 | 久久综合久色欧美综合狠狠 | 999国产视频| 欧美一性一看一免费视频 | 久久精品91久久久久久再现 | 色综合啪啪 | 国产午夜小视频 | 香蕉久草视频 | 午夜羞羞影院 | 色婷婷综合久久久久中文一区二区 | 成人18免费观看的软件 | 国产精品久久久久久久久久久久 | 羞羞的动漫在线观看 | 日本精品一区二区三区在线 | 天天看片网站 |