Python中Iterable和Iterator區(qū)別

Iterable是可迭代對(duì)象,Iterator是迭代器。

如果一個(gè)數(shù)據(jù)類型可以直接用for循環(huán)遍歷,那么它是Iterable

如果一個(gè)數(shù)據(jù)類型可以調(diào)用next()函數(shù)遍歷,那么它是Iterator。Iterator相當(dāng)于一個(gè)惰性的數(shù)據(jù)流,每次調(diào)用next()時(shí)才計(jì)算下一個(gè)值。這種按需計(jì)算并生成元素的方法能夠減少內(nèi)存的占用。

由此可見(jiàn)dict類型是Iterable,不是Iterator。list、str也不是Iterator。

對(duì)于非Iterator的數(shù)據(jù)類型,可以使用iter()函數(shù)將其轉(zhuǎn)換為Iterator

查看一個(gè)數(shù)據(jù)類型是不是Iterable或Iterator,可以:

from collections.abc import Iterator, Iterable


print(isinstance(#datatype, Iterator))

print(isinstance(#datatype, Iterable))

應(yīng)用:可以利用Iterator構(gòu)造全體素?cái)?shù)、全體自然數(shù)這種集合,因?yàn)槭嵌栊詷?gòu)造,不會(huì)占用很大內(nèi)存。

最后編輯于
?著作權(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),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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