久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

自學Python教程【第七十一節】reduce 函數

歡迎大家來到自學Python教程教室,上一講我們學習Python的Python 中一個比較有意思的內置函數 map,這節課我們來了解Python中另一個類似的函數reduce 函數的相關內容,來看看吧:

map 可以看作是把一個序列根據某種規則,映射到另一個序列。reduce 做的事情就是把一個序列根據某種規則,歸納為一個輸出。

上例子。以前我們給過一個習題,求1累加到100的和。尋常的做法大概是這樣:

sum = 0

for i in xrange(1, 101):

sum += i

print sum

如果用 reduce 函數,就可以寫成:

lst = xrange(1, 101)

def add(x, y):

return x + y

print reduce(add, lst)

解釋一下:

reduce(function, iterable[, initializer])

第一個參數是作用在序列上的方法,第二個參數是被作用的序列,這與 map 一致。另外有一個可選參數,是初始值。

function 需要是一個接收2個參數,并有返回值的函數。它會從序列 iterable 里從左到右依次取出元素,進行計算。每次計算的結果,會作為下次計算的第一個參數。

提供初始值 initializer 時,它會作為第一次計算的第一個參數。否則,就先計算序列中的前兩個值。

如果把剛才的 lst 換成 [1,2,3,4,5],那 reduce(add, lst) 就相當于 ((((1+2)+3)+4)+5)。

同樣,可以用 lambda 函數:

reduce((lambda x, y: x + y), xrange(1, 101))

所以,在對于一個序列進行某種統計操作的時候,比如求和,或者諸如統計序列中元素的出現個數等(可嘗試下如何用 reduce 做到),可以選擇使用 reduce 來實現。相對可以使代碼更簡潔。

我覺得,寫代碼的可讀性是很重要的事情,簡潔易懂的代碼,既容易讓別人看懂,也便于自己以后的維護。同時,較少的代碼也意味著比較高的開發效率和較少的出錯可能。應盡量避免寫混亂冗長的代碼。當然,也不用為了一味追求代碼的精簡,總是想方設法把代碼寫在一行里。那就又走了另一個極端,同樣也缺乏可讀性。而至于是否使用類似 map、reduce 這樣的方法,也是根據需要和個人習慣,我認為并沒有一定的規則限制。

順便說句,Python3 里,reduce已經被移出內置函數,使用 reduce 需要先通過 from functools import reduce 引入。

恭喜您在Python自學的道路上又堅持了一天,今天我們學習了Python中reduce 函數的相關內容,下節課我們將分享更多Python中的相關內容,敬請關注 !

好啦,今天的分享到這里就結束了,希望大家能夠持續關注馬哥教育官網,每天都會有大量優質內容與大家分享!

聲明:文章來源于網絡,侵刪!

相關新聞

歷經多年發展,已成為國內好評如潮的Linux云計算運維、SRE、Devops、網絡安全、云原生、Go、Python開發專業人才培訓機構!

    1. 主站蜘蛛池模板: 山西省| 五华县| 西青区| 马龙县| 新营市| 沈丘县| 西安市| 松原市| 光山县| 沽源县| 兴山县| 涟水县| 旺苍县| 英吉沙县| 靖安县| 玛纳斯县| 屏东县| 沐川县| 天津市| 政和县| 武清区| 博罗县| 博乐市| 通化市| 焦作市| 息烽县| 清镇市| 新龙县| 兴山县| 六盘水市| 旬邑县| 迭部县| 汉寿县| 海伦市| 麦盖提县| 江陵县| 元谋县| 福海县| 长治市| 涟水县| 昆山市|