本文結合各種實際的例子詳細講解了Python5個內建高階函數的使用,能夠幫助理解Python的數據結構和提高數據處理的效率,這5個函數分別是:
一、map1.1 語法map函數的基本語法是map(func, seq),其含義指的是:對後面可迭代序列中的每個元素執行前面的函數func的功能,最終獲取到一個新的序列。注意:
Python3 中返回的是一個可迭代器,如果想返回列表,可以使用list()進行處理help(map) # 查看幫助信息
1.2 demo通過舉例說明map函數的使用方法
使用匿名函數的時候可以有多個參數
二、reduce2.1 語法reduce函數的定義:
reduce(function, sequence [, initial] ) -> valuereduce依次從sequence中取一個元素,和上一次調用function的結果做參數,再次調用function。
「第一次調用function時,如果提供initial參數,會以sequence中的第一個元素和initial作為參數調用function,否則會以序列sequence的第一個數
」2.2 使用Python3中已將reduce函數移到functools模塊中,需要先進行導入:
from functools import reduce # 導入help(reduce) # 查看幫助文檔上面的例子我們通過一個圖形來解釋說明:
2.3 demoimage-20201024185550970具體過程為:
1. 1*2+1=3
2. 3*3+1=10 # 第一個3為上面的結果3,第2個原始數據中的3
3. 10*4+1=41初始化值和序列中的第一個值執行func函數,將得到的結果作為下次的起始值
# 具體過程解釋為
1. 6+1=7
2. 7+2=9
3. 9+3=12
4. 12+4=16
5. 16+5=21
三、filter3.1 語法filter()函數用於過濾序列,過濾掉不符合條件的那些元素,返回符合條件的元素組成新列表。
序列中的每個元素作為參數傳遞給函數進行判斷,返回True或者False,最後將返回True的元素放到新列表中。
filter()語法如下:
filter(function, iterable) # 前者為函數,後者為待執行的序列
3.2 demohelp(filter) # 幫助文檔返回10以內的偶數
選擇符合指定要求的字符串
四、sorted4.1 語法sorted(iterable, key=None, reverse=False)
4.2 3個參數sorted()接受3個參數,返回的是一個排序後的列表
reverse=False,接受一個布爾值,選擇是否反轉排序結果,默認是False
接受一個回調函數key=None,回調函數只能有一個參數,根據函數的返回值進行排序
4.3 demohelp(sorted) # 幫助文檔
4.4 結果反轉結果反轉的意義就是將結果降序排列,因為原本默認是升序的,使用的是reverse=True
4.5 理解keykey參數的作用是我們自定義一個函數,然後通過將序列中的元素作用於函數之後再進行排序
在這裡我們使用絕對值函數
4.6 對比sort()sort()方法只能對原列表list進行排序,參數和sorted是相同的
結果是將原來的列表直接原地修改,而sorted 是生成新的列表,二者是不同的
五、zipzip()是Python中一個非常重要的方法,能夠快速的實現很多功能。
5.1 語法zip([iterable,...]) # iterable是一個或者多個可迭代器
函數執行的結果在Python3中返回的是一個zip對象,如果需要展示成列表的形式,直接使用list方法展開;展開的結果是列表中嵌套元組的形式help(zip) # 查看文檔
5.2 zip接受一個序列zip中可以接受列表、元組、字符串等形式
zip接受空列表的形式,返回的仍空列表
5.3 zip接受多個序列同時對不同類型的序列進行合併
5.4 處理長度不同當多個序列同時存在,取長度最小的那個序列的長度
5.5 zip(*iterables)我們一般認為該方法是zip的反過程,是一個unzip的過程,舉例說明其使用:
5.6 複雜例子下面看一個更為複雜的例子
這個例子的解釋為:
[x]*3結果為[x,x,x],實際上也是[[4,5,6],[4,5,6],[4,5,6]][*[x]*3]的結果則為[(4,4,4),(5,5,5),(6,6,6)]5.7 zip運用下面通過zip的實際例子來說明它的應用:
for循環實現:
使用zip實現: