1. 程式人生 > 程式設計 >Python中常用的高階函式例項詳解

Python中常用的高階函式例項詳解

前言

高階函式指的是能接收函式作為引數的函式或類;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中常用的高階函式例項詳解,希望對大家有所幫助,也非常感謝大家對我們網站的支援!