3個(gè)Python函數(shù)幫程序員們避免編寫(xiě)循環(huán),提高運(yùn)行速度
圖源:wired
誕生于1991年的Python,這幾年突然火了。簡(jiǎn)歷上有了Python,就業(yè)競(jìng)爭(zhēng)力瞬間提升,甚至一些小學(xué)教材上都出現(xiàn)了Python內(nèi)容。這種語(yǔ)言的熱度超過(guò)了以往任何時(shí)候。
作為21世紀(jì)最流行的語(yǔ)言之一,Python當(dāng)然有很多有趣的函數(shù)值得深入探索和研究。筆者今天就將從理論和實(shí)際兩個(gè)方面,介紹其中三個(gè)函數(shù)。
這三個(gè)函數(shù)可不簡(jiǎn)單,它們可以幫助程序員們避免編寫(xiě)循環(huán),有時(shí)循環(huán)的運(yùn)行成本是很高的。此外,這些函數(shù)還有助于提高運(yùn)行速度。
拿出筆小本本開(kāi)始學(xué)習(xí)吧!
map()
map() 函數(shù)的作用是將另一函數(shù)作為參數(shù),與某種數(shù)組放在一起,旨在將函數(shù)(作為參數(shù)而導(dǎo)入的函數(shù))應(yīng)用于數(shù)組中的每一個(gè)項(xiàng)。其好處在于:
· 無(wú)需編寫(xiě)循環(huán)
· 2.比編寫(xiě)循環(huán)用時(shí)短
圖源:unsplash
來(lái)看看實(shí)際效果。筆者采用名為num_func()的函數(shù),該函數(shù)以一個(gè)數(shù)字作為參數(shù)。將該數(shù)字平方并除以二,然后返回。
注:函數(shù)的操作是任意選擇的,用戶可以在函數(shù)中執(zhí)行任何想進(jìn)行的操作。

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

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

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

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

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

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

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