1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Python高階函數(shù)使用總結(jié)!

        共 2321字,需瀏覽 5分鐘

         ·

        2020-11-10 20:53

        作者 |?皮錢超
        來源 |?Datawhale


        本文約2000字,建議閱讀10分鐘

        本文結(jié)合各種實(shí)際的例子詳細(xì)講解了Python5個(gè)內(nèi)建高階函數(shù)的使用,能夠幫助理解Python的數(shù)據(jù)結(jié)構(gòu)和提高數(shù)據(jù)處理的效率,這5個(gè)函數(shù)分別是:

        • map
        • reduce
        • filter
        • sorted/sort
        • zip

        一、map

        1.1 語法

        map函數(shù)的基本語法是map(func, seq),其含義指的是:對(duì)后面可迭代序列中的每個(gè)元素執(zhí)行前面的函數(shù)func的功能,最終獲取到一個(gè)新的序列。注意:

        • Python2 中直接返回的是一個(gè)列表
        • Python3 中返回的是一個(gè)可迭代器,如果想返回列表,可以使用list()進(jìn)行處理
        help(map)  # 查看幫助信息

        1.2 demo

        通過舉例說明map函數(shù)的使用方法

        1. 使用Python內(nèi)置函數(shù)
        1. 使用自定義函數(shù)
        1. 使用匿名函數(shù)lambda

        使用匿名函數(shù)的時(shí)候可以有多個(gè)參數(shù)

        二、reduce

        2.1 語法

        reduce函數(shù)的定義:

        reduce(function, sequence [, initial] ) -> value

        reduce依次從sequence中取一個(gè)元素,和上一次調(diào)用function的結(jié)果做參數(shù),再次調(diào)用function。

        第一次調(diào)用function時(shí),如果提供initial參數(shù),會(huì)以sequence中的第一個(gè)元素和initial作為參數(shù)調(diào)用function,否則會(huì)以序列sequence的第一個(gè)數(shù)

        2.2 使用

        Python3中已將reduce函數(shù)移到functools模塊中,需要先進(jìn)行導(dǎo)入:

        from functools import reduce   # 導(dǎo)入
        help(reduce)  # 查看幫助文檔

        上面的例子我們通過一個(gè)圖形來解釋說明:

        2.3 demo

        1. 使用自定義函數(shù)
        1. 使用匿名函數(shù)lambda
        image-20201024185550970
        1. 一個(gè)復(fù)雜的例子

        具體過程為:

        1. 1*2+1=3
        2. 3*3+1=10 # 第一個(gè)3為上面的結(jié)果3,第2個(gè)原始數(shù)據(jù)中的3
        3. 10*4+1=41
        1. 帶有初始值的例子

        初始化值和序列中的第一個(gè)值執(zhí)行func函數(shù),將得到的結(jié)果作為下次的起始值

        # 具體過程解釋為

        1. 6+1=7
        2. 7+2=9
        3. 9+3=12
        4. 12+4=16
        5. 16+5=21

        三、filter

        3.1 語法

        filter()函數(shù)用于過濾序列,過濾掉不符合條件的那些元素,返回符合條件的元素組成新列表。

        序列中的每個(gè)元素作為參數(shù)傳遞給函數(shù)進(jìn)行判斷,返回True或者False,最后將返回True的元素放到新列表中。

        filter()語法如下:

        filter(function, iterable)  # 前者為函數(shù),后者為待執(zhí)行的序列

        3.2 demo

        help(filter)  # 幫助文檔
        1. 使用自定義函數(shù)

        返回10以內(nèi)的偶數(shù)

        1. 使用匿名函數(shù)lambda
        1. 對(duì)字符串的篩選

        選擇符合指定要求的字符串

        四、sorted

        4.1 語法

        sorted(iterable, key=None, reverse=False)

        4.2 3個(gè)參數(shù)

        sorted()接受3個(gè)參數(shù),返回的是一個(gè)排序后的列表

        • 可迭代對(duì)象iterable

        • reverse=False,接受一個(gè)布爾值,選擇是否反轉(zhuǎn)排序結(jié)果,默認(rèn)是False

        • 接受一個(gè)回調(diào)函數(shù)key=None,回調(diào)函數(shù)只能有一個(gè)參數(shù),根據(jù)函數(shù)的返回值進(jìn)行排序

        4.3 demo

        help(sorted)  # 幫助文檔
        1. 默認(rèn)不反轉(zhuǎn)
        1. 對(duì)元組、range對(duì)象、字典的排序

        4.4 結(jié)果反轉(zhuǎn)

        結(jié)果反轉(zhuǎn)的意義就是將結(jié)果降序排列,因?yàn)樵灸J(rèn)是升序的,使用的是reverse=True

        4.5 理解key

        key參數(shù)的作用是我們自定義一個(gè)函數(shù),然后通過將序列中的元素作用于函數(shù)之后再進(jìn)行排序

        在這里我們使用絕對(duì)值函數(shù)

        4.6 對(duì)比sort()

        sort()方法只能對(duì)原列表list進(jìn)行排序,參數(shù)和sorted是相同的

        結(jié)果是將原來的列表直接原地修改,而sorted 是生成新的列表,二者是不同的

        五、zip

        zip()Python中一個(gè)非常重要的方法,能夠快速的實(shí)現(xiàn)很多功能。

        5.1 語法

        zip([iterable,...])  # iterable是一個(gè)或者多個(gè)可迭代器
        • 函數(shù)執(zhí)行的結(jié)果在Python3中返回的是一個(gè)zip對(duì)象,如果需要展示成列表的形式,直接使用list方法展開;展開的結(jié)果是列表中嵌套元組的形式
        • 在Python2中直接返回的是元組列表形式
        help(zip)  # 查看文檔

        5.2 zip接受一個(gè)序列

        zip中可以接受列表、元組、字符串等形式

        zip接受空列表的形式,返回的仍空列表

        5.3 zip接受多個(gè)序列

        同時(shí)對(duì)不同類型的序列進(jìn)行合并

        5.4 處理長度不同

        當(dāng)多個(gè)序列同時(shí)存在,取長度最小的那個(gè)序列的長度

        5.5 zip(*iterables)

        我們一般認(rèn)為該方法是zip的反過程,是一個(gè)unzip的過程,舉例說明其使用:

        5.6 復(fù)雜例子

        下面看一個(gè)更為復(fù)雜的例子

        這個(gè)例子的解釋為:

        1. [x]是一個(gè)列表中含有列表,x本身就是一個(gè)列表
        2. [x]*3結(jié)果為[x,x,x],實(shí)際上也是[[4,5,6],[4,5,6],[4,5,6]]
        3. [*[x]*3]的結(jié)果則為[(4,4,4),(5,5,5),(6,6,6)]

        5.7 zip運(yùn)用

        下面通過zip的實(shí)際例子來說明它的應(yīng)用:

        1. 列表求和
        1. 數(shù)據(jù)合并
        1. 字典的key-value轉(zhuǎn)換

        for循環(huán)實(shí)現(xiàn):

        使用zip實(shí)現(xiàn):

        瀏覽 36
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            亚洲黄在线观看 | 成人免费A片免费免费 | 婷婷五情天综合免费 | 朝鲜黄色一级片 | 日本一級片黃色一級九抓直播 | 韩国美女黄色片 | 小骚逼网| 天堂91视频 | 操逼链接| 男生的鸡鸡插入女生的屁股 |