python中迭代器與生成器的區(qū)別-創(chuàng)新互聯(lián)

python中迭代器與生成器的區(qū)別?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

成都創(chuàng)新互聯(lián)公司服務(wù)項目包括新區(qū)網(wǎng)站建設(shè)、新區(qū)網(wǎng)站制作、新區(qū)網(wǎng)頁制作以及新區(qū)網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,新區(qū)網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到新區(qū)省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

迭代器

我們先從迭代器開始入手,迭代器并不是Python獨有的概念,在C++和Java當(dāng)中都有iterator的概念,兩者的使用也都差不多。迭代器主要解決了一個問題,在一個復(fù)雜場景下,獲取數(shù)據(jù)怎么盡可能簡便。

我們來假設(shè)一個場景,假設(shè)我們從某個數(shù)據(jù)源獲取了一批數(shù)據(jù)。然后我們需要調(diào)用前一萬條生成一個結(jié)果,得到結(jié)果之后,我們要將剩下的數(shù)據(jù)交給另一個調(diào)用方去處理。這個過程看起來非常平常,但是隱藏了兩個問題,第一個問題是如果我們能保證第一次處理的時候,每次都是使用一萬條還好說,如果我們使用的條數(shù)是一個動態(tài)的值呢?顯然,我們需要一個變量來記錄我們究竟用了多少條數(shù)據(jù),和這批數(shù)據(jù)的狀態(tài)。其次,如果這個數(shù)據(jù)量很大會存在一個數(shù)據(jù)傳輸?shù)膯栴}。我們每次都要將一大批數(shù)據(jù)傳來傳去,顯然會消耗很多資源。

還有一個場景是如果我們開發(fā)的是一個比較復(fù)雜的數(shù)據(jù)結(jié)構(gòu),比如一棵多叉樹,下游想要遍歷它的時候,必須要了解它的實現(xiàn)原理才行。這顯然也不太友好。

迭代器的出現(xiàn)正是針對以上這些問題,它的含義也很簡單,有點像是我們遍歷鏈表的時候用到的cur的指針。永遠(yuǎn)指向當(dāng)前的位置,永遠(yuǎn)知道下一個位置在哪里。

容器迭代器

我們先從簡單的元素迭代器開始了解它的用途,我們都知道Python當(dāng)中經(jīng)典的幾個容器:list, tupledict。它們都是一個可迭代對象,我們可以直接使用關(guān)鍵字iter獲取一個對應(yīng)的迭代器。

我們來看一個例子:

arr = [1, 3, 4, 5, 9]

it = iter(arr)

print(next(it))
print(next(it))

網(wǎng)頁題目:python中迭代器與生成器的區(qū)別-創(chuàng)新互聯(lián)
標(biāo)題URL:http://muchs.cn/article30/ceeepo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、品牌網(wǎng)站建設(shè)、動態(tài)網(wǎng)站網(wǎng)站設(shè)計、網(wǎng)站內(nèi)鏈、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)