Python學習筆記 高階函式

2021-08-11 05:48:07 字數 1517 閱讀 5614

高階函式的概念是我在學習kotlin的時候才接觸到的,後來才發現很多語言都有該特性。簡單的定義為:把函式作為引數傳入另乙個函式中

例如:

def

add(x, y, f):

return f(x) + f(y)

print(add(-5, 6, abs))

其中,abs函式作為引數傳到add函式中,add函式就可以稱為高階函式。

簡單學習幾個內建的高階函式

map()函式接收兩個引數,乙個是函式,乙個是iterable,map將傳入的函式依次作用到序列的每個元素,並把結果作為新的iterator返回。

例如:

>>> def f(x):

...return x * x

...>>> l=[1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> r = map(f, l)

>>> list(r)

[1, 4, 9, 16, 25, 36, 49, 64, 81]

reduce把乙個函式作用在乙個序列[x1, x2, x3, …]上,這個函式必須接收兩個引數,reduce把結果繼續和序列的下乙個元素做累積計算,其效果就是:reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

>>> from functools import reduce

>>> def add(x, y):

...return x + y

...>>> reduce(add, [1, 3, 5, 7, 9])

25

和map()類似,filter()也接收乙個函式和乙個序列。和map()不同的是,filter()把傳入的函式依次作用於每個元素,然後根據返回值是true還是false決定保留還是丟棄該元素。

def

is_odd

(n):

return n % 2 == 1

list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))

# 結果: [1, 5, 9, 15]

python內建的sorted()函式就可以對list進行排序:

sorted([36, 5, -12, 9, -21])

[-21, -12, 5, 9, 36]

作為高階函式時,可以按照函式來進行排序,例如按照絕對值排序

sorted([36, 5, -12, 9, -21], key=abs)

[5, 9, -12, -21, 36]

要進行反向排序,不必改動key函式,可以傳入第三個引數reverse=true:

sorted([36, 5, -12, 9, -21], key=abs,reverse=true)

[36, -21, -12, 9,5]

python學習筆記 高階函式map reduce

既然變數可以指向函式,函式的引數能接收變數,那麼乙個函式就可以接收另乙個函式作為引數,這種函式就稱之為高階函式。乙個最簡單的高階函式 def add x,y,f return f x f y 當我們呼叫add 5,6,abs 時,引數x,y和f分別接收 5,6和abs map deff x retu...

Python 學習筆記 5 1 高階函式

高階函式英文叫higher order function。什麼是高階函式?我們以實際 為例子,一步一步深入概念。以python內建的求絕對值的函式abs 為例,呼叫該函式用以下 abs 10 10但是,如果只寫abs呢?abs infunction abs 可見,abs 10 是函式呼叫,而abs是...

python高階學習筆記(一) 高階函式

filter filter 函式接收乙個 函式 f 和乙個list 這個函式 f 的作用是對每個元素進行判斷,返回 true或 false,filter 根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。例如,要從乙個list 1,4,6,7,9,12,17 中刪除偶數,保...