<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>

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

          共 2321字,需瀏覽 5分鐘

           ·

          2020-11-10 20:53

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


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

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

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

          一、map

          1.1 語法

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

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

          1.2 demo

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

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

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

          二、reduce

          2.1 語法

          reduce函數(shù)的定義:

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

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

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

          2.2 使用

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

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

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

          2.3 demo

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

          具體過程為:

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

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

          # 具體過程解釋為

          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ù)用于過濾序列,過濾掉不符合條件的那些元素,返回符合條件的元素組成新列表。

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

          filter()語法如下:

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

          3.2 demo

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

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

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

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

          四、sorted

          4.1 語法

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

          4.2 3個參數(shù)

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

          • 可迭代對象iterable

          • reverse=False,接受一個布爾值,選擇是否反轉排序結果,默認是False

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

          4.3 demo

          help(sorted)  # 幫助文檔
          1. 默認不反轉
          1. 對元組、range對象、字典的排序

          4.4 結果反轉

          結果反轉的意義就是將結果降序排列,因為原本默認是升序的,使用的是reverse=True

          4.5 理解key

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

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

          4.6 對比sort()

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

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

          五、zip

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

          5.1 語法

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

          5.2 zip接受一個序列

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

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

          5.3 zip接受多個序列

          同時對不同類型的序列進行合并

          5.4 處理長度不同

          當多個序列同時存在,取長度最小的那個序列的長度

          5.5 zip(*iterables)

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

          5.6 復雜例子

          下面看一個更為復雜的例子

          這個例子的解釋為:

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

          5.7 zip運用

          下面通過zip的實際例子來說明它的應用:

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

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

          使用zip實現(xiàn):

          瀏覽 36
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  青青草A片 | 亚洲色情影视 | 无码人妻免费视频 | 无码欧美日韩二区三区蜜桃 | 亲子伦视频一区二区三区 |