久久国产乱子伦精品免费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開發專業人才培訓機構!
<p id="o0hlv"></p><pre id="o0hlv"><label id="o0hlv"></label></pre>

      主站蜘蛛池模板: 峡江县| 横峰县| 阿巴嘎旗| 平乡县| 腾冲县| 湄潭县| 澳门| 富顺县| 泸州市| 尤溪县| 宣武区| 海口市| 静乐县| 宁夏| 盐山县| 德阳市| 扎囊县| 安图县| 高唐县| 和平县| 慈利县| 团风县| 九江市| 西峡县| 海盐县| 长海县| 洱源县| 浠水县| 惠安县| 本溪| 开封县| 大庆市| 衡阳县| 台东县| 双鸭山市| 祁东县| 芜湖县| 舞钢市| 博罗县| 京山县| 靖西县|