自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

都應(yīng)該了解的Python函數(shù)式編程

開發(fā) 前端
lambda 函數(shù),又成為匿名函數(shù)。lambda 函數(shù)只能有一個(gè)表達(dá)式,而不需要寫 return 來返回函數(shù)的值。當(dāng)然,匿名函數(shù)也是一個(gè)函數(shù)對象,同樣可以把匿名函數(shù)賦值給一個(gè)變量。

函數(shù)式編程(Functional Programming)或者函數(shù)程序設(shè)計(jì),是一種編程范型。

它將計(jì)算機(jī)運(yùn)算視為數(shù)學(xué)上的函數(shù)運(yùn)算,并且避免使用程序狀態(tài)以及變量對象。

以上只是簡單的函數(shù)式編程的概念,我們只需簡單了解即可。

在 Python 中,函數(shù)式編程主要由幾個(gè)函數(shù)的使用構(gòu)成:lambda()?, map()?, reduce()?, filter()等。

1.lambda 函數(shù)

lambda 函數(shù),又成為匿名函數(shù)。lambda 函數(shù)只能有一個(gè)表達(dá)式,而不需要寫 return 來返回函數(shù)的值。當(dāng)然,匿名函數(shù)也是一個(gè)函數(shù)對象,同樣可以把匿名函數(shù)賦值給一個(gè)變量。

圖片

也可以把匿名函數(shù)作為返回值來返回

圖片

可以看出,變量 f 就是一個(gè) lambda 函數(shù)類型,需要使用?f()來調(diào)用該函數(shù)。

2.map函數(shù)

map 函數(shù)接收兩個(gè)參數(shù),一個(gè)是函數(shù),一個(gè)是 Interable (可迭代序列),map 函數(shù)依次將函數(shù)作用到序列的每個(gè)元素,并把結(jié)果作為新的 Interable 返回。

看一個(gè)例子:

圖片

一個(gè)簡單的列表解析,把列表 a 的每個(gè)元素都加2,用 map 函數(shù)可以寫為:

圖片

由于 map 函數(shù)返回的是一個(gè)惰性序列,需要通過?list()等函數(shù)來調(diào)用它。

雖然上面的代碼看起來比直接寫 for 循環(huán)要復(fù)雜,但是當(dāng)數(shù)據(jù)量很大的情況下,Python 的 for 效率就不是很高了,而 map 的效率是可以接近 C 語言的。同時(shí)代碼也簡潔很多,簡直裝X神器。

另一個(gè)小例子,把列表中的元素轉(zhuǎn)換為字符串,一條命令

圖片

3.reduce函數(shù)

它和 map 有些像,不過 map 是用于逐一遍歷,而 reduce 函數(shù)是用來遞歸計(jì)算的。

一個(gè)簡單的序列求和

圖片

對列表 a 的各個(gè)元素依次求和,再看一個(gè)自制的int()函數(shù)的例子

這是 Python 內(nèi)置函數(shù) int 的用法

圖片

我們通過 reduce 和 map 函數(shù)也可以實(shí)現(xiàn)如下

圖片

先用 map 函數(shù)來遍歷 23465 這個(gè)字符串列表,然后通過 reduce 函數(shù)遞歸應(yīng)用列表每個(gè)元素到 lambda 函數(shù)。

4. filter函數(shù)

它同樣接收一個(gè)函數(shù)和一個(gè)序列,filter()把傳入的函數(shù)依次作用于每個(gè)元素,然后根據(jù)返回值是 True 還是 False 決定保留還是丟棄該元素。

圖片

總結(jié)

使用這些函數(shù),不僅可以讓我們的代碼更加簡潔,同時(shí)在大數(shù)據(jù)量或者計(jì)算密集時(shí),能夠大大提高效率。

責(zé)任編輯:武曉燕 來源: 蘿卜大雜燴
相關(guān)推薦

2015-09-01 09:55:47

函數(shù)式編程

2017-04-05 12:04:17

python函數(shù)

2020-08-07 07:56:50

Ubuntu快捷鍵Windows

2024-04-10 12:36:41

硬件代碼

2020-03-22 11:12:25

加速函數(shù)Python程序員

2019-05-21 16:19:46

前端性能優(yōu)化圖片

2018-08-10 10:45:35

編程語言Python程序員

2023-10-13 18:15:06

2013-03-20 17:58:41

虛擬內(nèi)存程序員

2018-03-27 23:15:11

2017-12-05 09:32:00

數(shù)據(jù)分析對比分析常規(guī)分析

2017-10-24 14:21:30

機(jī)器學(xué)習(xí)人工智能算法

2014-01-09 14:43:40

Linux用戶命令行

2021-10-20 06:05:01

編程語言開發(fā)

2019-08-21 10:15:41

開發(fā)Redis數(shù)據(jù)

2019-05-24 09:04:31

C++編程語言開發(fā)

2023-05-18 10:33:20

2016-09-28 22:44:40

HttpWeb

2024-05-28 11:38:32

2025-01-07 10:01:10

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號