首頁  >  文章  >  後端開發  >  都應該了解的Python函數式編程

都應該了解的Python函數式編程

WBOY
WBOY轉載
2023-04-11 22:43:121479瀏覽

函數式程式設計(Functional Programming)或函數程式設計,是一種程式設計範式。

它將電腦運算視為數學上的函數運算,並且避免使用程式狀態以及變數物件。

以上只是簡單的函數式程式設計的概念,我們只需簡單了解即可。

在 Python 中,函數式程式設計主要由幾個函數的使用構成:lambda(), map(), reduce(), filter()等。

1.lambda 函數

lambda 函數,再成為匿名函數。 lambda 函數只能有一個表達式,而不需要寫 return 來傳回函數的值。當然,匿名函數也是函數對象,同樣可以把匿名函數賦值給一個變數。

都應該了解的Python函數式編程

也可以把匿名函數當作回傳值來回傳

都應該了解的Python函數式編程

可以看出,變數f 就是一個lambda 函數類型,需要使用f()來呼叫函數。

2.map函數

map 函數接收兩個參數,一個是函數,一個是Interable (可迭代序列),map 函數依序將函數作用到序列的每個元素,並把結果當作新的Interable 回傳。

看一個例子:

都應該了解的Python函數式編程

一個簡單的列表解析,把列表a 的每個元素都加2,用map 函數可以寫成:

都應該了解的Python函數式編程

由於map 函數傳回的是一個惰性序列,需要透過list()等函數來呼叫它。

雖然上面的程式碼看起來比直接寫for 迴圈要複雜,但是當資料量很大的情況下,Python 的for 效率就不是很高了,而map 的效率是可以接近C 語言的。同時程式碼也簡潔很多,簡直裝X神器。

另一個小例子,把列表中的元素轉換成字串,一條指令

都應該了解的Python函數式編程

#3.reduce函數

它和map 有些像,不過map 是用來逐一遍歷,而reduce 函數是用來遞歸計算的。

一個簡單的序列求和

都應該了解的Python函數式編程

對列表a 的各個元素依序求和,再看一個自製的int()函數的例子

這是Python 內建函數int 的用法

都應該了解的Python函數式編程

我們透過reduce 和map 函數也可以實作如下

都應該了解的Python函數式編程

先用map 函數來遍歷23465 這個字串列表,然後透過reduce 函數遞歸應用列表每個元素到lambda 函數。

4. filter函數

它同樣接收一個函數和一個序列,filter()把傳入的函數依序作用於每個元素,然後根據回傳值是True 還是False 決定保留還是丟棄該元素。

都應該了解的Python函數式編程

總結

使用這些函數,不僅可以讓我們的程式碼更加簡潔,同時在大數據量或計算密集時,能夠大幅提高效率。

以上是都應該了解的Python函數式編程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除