迭代器

可以直接作用于for循環(huán)的對(duì)象統(tǒng)稱為可迭代對(duì)象:Iterable

可使用isinstance()方法來判斷一個(gè)對(duì)象是否為可迭代對(duì)象。

兩類可迭代對(duì)象:

? 1、集合型數(shù)據(jù)(list、tuple、dict、set、str等)

? 2、generator(包括生成器和帶yield的generator function)

而生成器不但可以作用于for循環(huán),還可以被next()函數(shù)不斷調(diào)用并返回下一個(gè)值,直到最后拋出StopIteration錯(cuò)誤表示無法繼續(xù)返回下一個(gè)值了。

可以被next()函數(shù)調(diào)用并不斷返回下一個(gè)值的對(duì)象稱為迭代器:Iterator。

可以使用isinstance()判斷一個(gè)對(duì)象是否是Iterator對(duì)象。

生成器都是Iterator對(duì)象,但list、dict、str雖然是Iterable,卻不是Iterator(后者不能用next()方法調(diào)用)。

從性質(zhì)上看,是因?yàn)镮terator對(duì)象表示一個(gè)數(shù)據(jù)流,可被next()調(diào)用并不斷返回下一個(gè)數(shù)據(jù),直到無數(shù)據(jù)是拋出錯(cuò)誤。只在需要返回下一個(gè)數(shù)據(jù)時(shí)才會(huì)計(jì)算,所以才不會(huì)像列表生成式那樣占用內(nèi)存,甚至Iterator可以表示一個(gè)無限大的數(shù)據(jù)流,例如全體自然數(shù),而這對(duì)于list來說是永遠(yuǎn)不可能的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容