Python中常用的高階函式例項詳解
阿新 • • 發佈:2020-02-21
前言
高階函式指的是能接收函式作為引數的函式或類;python中有一些內建的高階函式,在某些場合使用可以提高程式碼的效率.
lambda
當在使用一些函式的時候,我們不需要顯式定義函式名稱,直接傳入lambda匿名函式即可。lambda匿名函式通常和其他函式搭配使用。
比如可以直接使用如下的lambda表示式計算當x=3時,y = x * 3 + 5的函式值。
In [1]: (lambda x: x * 3 + 5)(3) Out[1]: 14
map
map函式將一個函式和序列/迭代器(可以傳入多個)作為引數,應用函式到序列中的每個元素,返回一個迭代器。
In [4]: a = list(range(5)) In [5]: b = list(range(2,7)) # 結合lambda匿名函式,對a列表中的每個元素,計算x * 3 + 5的函式值 In [6]: list(map(lambda x: x * 3 + 5,a)) Out[6]: [5,8,11,14,17] In [9]: def add(x,y): ...: return x+y # 傳入多個序列,a、b兩個序列中的對應元素依次傳入函式add中進行計算 # Note: a、b兩個序列的長度可以不相等 In [10]: list(map(add,a,b)) Out[10]: [2,4,6,10]
filter
filter函式(filter(func,seq))藉助一個函式來測試序列/迭代器中每個元素的真假,返回一個過濾後的迭代器。
In [18]: a = list(range(5)) In [19]: def isodd(number): ...: if number % 2 == 0: ...: return False ...: return True ...: In [20]: filter(isodd,a) Out[20]: <filter at 0x1a6dc460748> # 過濾掉所有偶數 In [21]: list(filter(isodd,a)) Out[21]: [1,3]
reduce
reduce函式傳入一個函式和序列/迭代器,它將滾動計算序列中元素,返回單個結果。例如要計算一個列表所有元素的和。
In [23]: from functools import reduce In [24]: a = list(range(5)) In [25]: sum = reduce((lambda x,y: x + y),a) In [26]: sum Out[26]: 10
sorted
sorted(iter,key,reverse=False),高階排序函式,可以根據key實現自定義排序。reverse=False表示預設排序結果升序。
# 比如按照a中每個字串最後的數字大小,降序排序 In [30]: a Out[30]: ['fasad_2','fadfc_4','7hdc_0','ncsl_1','fai_3'] In [32]: sorted(a,key=lambda x: int(x[x.rindex('_') + 1:]),reverse=True) Out[32]: ['fadfc_4','fai_3','fasad_2','7hdc_0']
總結
以上所述是小編給大家介紹的Python中常用的高階函式例項詳解,希望對大家有所幫助,也非常感謝大家對我們網站的支援!