Python函式式程式設計(二) 常見高階函式

2021-09-07 20:11:12 字數 2405 閱讀 1738

乙個函式的引數中有函式作為引數,這個函式就為高階函式。

下面學習幾個常見高階函式。

一、map()

傳入的函式依次作用到序列的每個元素,並把結果作為新的iterator返回

舉例:有乙個函式f(x)=x2,要把這個函式作用在乙個list[1, 2, 3, 4, 5, 6, 7, 8, 9]

>>>def f(x):

...

return x *x

...>>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9

])>>>list(r)

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

即list每乙個元素都執行了函式f的操作

二、filter()

傳入的函式依次作用於每個元素,然後根據返回值是true還是false決定保留還是丟棄該元素

和map()類似,不過這裡就要求函式的返回值必須是布林型

舉例:

在乙個list中,刪掉偶數,只保留奇數

def is_odd(n):

return n % 2 == 1

list(filter(is_odd, [

1, 2, 4, 5, 6, 9, 10, 15

]))# 結果: [

1, 5, 9, 15]

把乙個序列中的空字串刪掉,可以這麼寫:

def not_empty(s):

return

s and s.strip()

list(filter(not_empty, ['a

', '', '

b', none, '

c', '

']))

# 結果: ['a

', '

b', '

c']

三、reduce()

乙個函式作用在乙個序列[x1, x2, x3, ...]上,這個函式必須接收兩個引數,reduce把結果繼續和序列的下乙個元素做累積計算

舉例:

>>> from

functools import reduce

>>>def add(x, y):

...

return x +y

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

])25

過程就是先計算1+3 返回4 ,再根據這個結果+5 ,依次計算,就相當於1+3+5+7+9=25

四、sorted()

排序函式,數字按有小到大排列,字串由ascii大小排列

1、基礎用法:

>>> sorted([36, 5, -12, 9, -21

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

>>> sorted(['

bob', '

about

', '

zoo', '

credit'])

['credit

', '

zoo', '

about

', '

bob']

2、函式key引數用法:

即將元素先按key對應的函式乙個個處理完之後在進行排序

下面,先將list的元素乙個個絕對值處理,然後排序

sorted()函式也是乙個高階函式,它還可以接收乙個key函式來實現自定義的排序,例如按絕對值大小排序:

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

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

下面,先將list的元素字母都小寫,然後排序

>>> sorted(['

bob', '

about

', '

zoo', '

credit

'], key=str.lower)['

about

', '

bob', '

credit

', '

zoo']

3、函式reverse引數用法,是否結果反轉

>>> sorted(['

bob', '

about

', '

zoo', '

credit

'], key=str.lower, reverse=true)['

zoo', '

credit

', '

bob', '

about

']

Python函式式程式設計(二) 常見高階函式

乙個函式的引數中有函式作為引數,這個函式就為高階函式。下面學習幾個常見高階函式。一 map 傳入的函式依次作用到序列的每個元素,並把結果作為新的iterator返回 舉例 有乙個函式f x x2,要把這個函式作用在乙個list 1,2,3,4,5,6,7,8,9 上 def f x return x...

Python之函式式程式設計(二)

要點 外部巢狀作用域 什麼是閉包?什麼是函式裝飾器?函式裝飾器的實現原理?裝飾器中關於函式引數的體現 外部巢狀作用域 通過對python函式作用域的學習,可以了解python函式中擁有四大變數並通過legb法則負責不同範圍的作用域,分別為區域性作用域 local 外部巢狀作用域 enclsing 全...

函式式程式語言python 函式式程式設計

函式是python內建支援的一種封裝,我們通過把大段 拆成函式,通過一層一層的函式呼叫,就可以把複雜任務分解成簡單的任務,這種分解可以稱之為面向過程的程式設計。函式就是面向過程的程式設計的基本單元。而函式式程式設計 請注意多了乙個 式 字 functional programming,雖然也可以歸結...