更少循環(huán)?看看這3個Python函數(shù)
本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)
誕生于1991年的Python,這幾年突然火了。簡歷上有了Python,就業(yè)競爭力瞬間提升,甚至一些小學(xué)教材上都出現(xiàn)了Python內(nèi)容。這種語言的熱度超過了以往任何時候。

作為21世紀(jì)比較流行的語言之一,Python當(dāng)然有很多有趣的函數(shù)值得深入探索和研究。筆者今天就將從理論和實(shí)際兩個方面,介紹其中三個函數(shù)。
這三個函數(shù)可不簡單,它們可以幫助程序員們避免編寫循環(huán),有時循環(huán)的運(yùn)行成本是很高的。此外,這些函數(shù)還有助于提高運(yùn)行速度。
拿出筆小本本開始學(xué)習(xí)吧!
map()
map() 函數(shù)的作用是將另一函數(shù)作為參數(shù),與某種數(shù)組放在一起,旨在將函數(shù)(作為參數(shù)而導(dǎo)入的函數(shù))應(yīng)用于數(shù)組中的每一個項(xiàng)。其好處在于:
- 無需編寫循環(huán)
- 比編寫循環(huán)用時短
來看看實(shí)際效果。筆者采用名為num_func()的函數(shù),該函數(shù)以一個數(shù)字作為參數(shù)。將該數(shù)字平方并除以二,然后返回。
注:函數(shù)的操作是任意選擇的,用戶可以在函數(shù)中執(zhí)行任何想進(jìn)行的操作。

現(xiàn)在聲明一串要應(yīng)用num_func()的數(shù)字?jǐn)?shù)組。注:map() 本身將會返回一個map對象,因此需要將其轉(zhuǎn)為為一個列:

大功告成!雖然不是多難的技術(shù),但是盡可能避免循環(huán)總是好事。
reduce()
reduce()則不同,必須從functools模塊將其導(dǎo)入。該操作主要是將一個給定的函數(shù)應(yīng)用于項(xiàng)目組,然后返回一個值。
最后一部分很關(guān)鍵——reduce()函數(shù)不會返回一個項(xiàng)目組,而是返回一個值。觀察以下圖表,以對此概念具體化。

在圖表不完全清楚的情況下,呈現(xiàn)出以下邏輯:
1.5加10等于15
2.15加12等于27
3.27加18等于45
4.45加25等于70
70是返回的值。從實(shí)現(xiàn)代碼開始,先從functools模塊導(dǎo)入reduce函數(shù),再聲明一個返回兩個數(shù)字之和的函數(shù):

現(xiàn)在,可以在代碼中重新查看圖表,并驗(yàn)證所有內(nèi)容是否正常工作:

當(dāng)然還有許多辦法可以對列表中的項(xiàng)目進(jìn)行匯總,這里只展示了函數(shù)工作原理中最簡單的一些例子。
filter()
這個函數(shù)也非常棒,它可以節(jié)省時間——包括編寫和執(zhí)行。顧名思義,這個函數(shù)的作用是只將滿足特定條件的項(xiàng)保留在數(shù)組中。
與map()一樣,預(yù)先聲明函數(shù),然后將其和迭代列表一起傳遞到 filter()。
來一個示例:現(xiàn)已提前聲明了一個名為 more_than_15()的函數(shù),即如果參數(shù)給定的項(xiàng)大于15,則返回True。

接下來,聲明一個數(shù)字?jǐn)?shù)組,并將其作為filter()函數(shù)中的第二個參數(shù)導(dǎo)入:

正如所料,只有三個值滿足給定條件。是不是看起來比循環(huán)好多了?
用好這三個函數(shù),你的代碼看起來會更好,循環(huán)數(shù)也會更少。熟能生巧,要多練習(xí)呀~





























