容器 (container)、可迭代物件(iterable)、迭代器(iterator)、生成器(generator)、列表/集合/字典推導式(list,set,dict comprehension)的關係圖大致如下:
首先直接上結論:
1.容器是一系列元素的集合,str、list、set、dict、file、sockets物件都可以看作是容器,容器都可以被迭代(用在for,while等語句中),因此他們被稱為可迭代物件。
2.可迭代物件實現了__iter__
方法,該方法返回乙個迭代器物件。
3.迭代器持有乙個內部狀態的字段,用於記錄下次迭代返回值,它實現了__next__
和__iter__
方法,迭代器不會一次性把所有元素載入到記憶體,而是需要的時候才生成返回結果。
4.生成器是一種特殊的迭代器,它的返回值不是通過return
而是用yield
。
tips:具體參考:完全理解python迭代物件、迭代器、生成器
可迭代物件 迭代器 生成器的區別
迭代 可迭代物件 迭代器 判斷乙個物件是不是可迭代物件的方法 from collections import iterable isinstance list range 100 iterable python中的可迭代物件有 可迭代物件的本質 迭代器的本質 迭代器中重點關注兩種方法 生成器 生成器...
可迭代物件 迭代器,生成器
可迭代物件 iterator 列表 集合 元組 字典 字串 生成器 我們可以使用isintance 判斷乙個物件是否是iterator物件 生成器 通過列表生成式,我們可以直接建立乙個列表,但是,受到記憶體限制,列表容量肯定是有限的,如果我們僅僅需要訪問前面幾個元素,如果列表元素可以按照某種演算法推...
可迭代物件 迭代器 生成器
可迭代物件 for迴圈機制 迭代器生成器 總結type所返回的型別是例項物件的類物件,而isinstance所進行的判斷則包含了例項物件的類物件及其父類。如圖 可迭代物件 迭代器 生成器所屬的型別分別為collections包裡的iterable,iterator,generator.實現了 ite...