浙江11选5前三值走势图:自學Python教程【第七十一節】reduce 函數

浙江11选5任3遗漏 www.ehxis.com 歡迎大家來到自學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中的相關內容,敬請關注 !

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

相關新聞

聯系我們

400-080-6560

在線咨詢:點擊這里給我發消息

郵件:[email protected]

工作時間:周一至周日,09:00-18:30

QR code