迭代器,生成器的區別

2021-10-03 07:31:35 字數 343 閱讀 1886

容器(列表、集合、元組、字典)都是可迭代的。可迭代物件中有iter( )方法,加上next( )方法形成乙個迭代器。

在 for迴圈 中用到了迭代器,迭代器有next( )方法可以獲取容器中下乙個物件,直到取完容器中的資料,返回「 stopiteration」 異常。

可以使用isinstance( ) 方法判斷乙個物件是否可迭代。

在for中,如果想要列舉它的元素需要事先生成所有的資料,而這些資料儲存在記憶體中,這樣容易造成記憶體溢位的問題。

生成器是只有用到的時候才會生成乙個元素,並呼叫next( )方法生成下乙個元素。生成器的標誌就是yield關鍵字,yield能夠保證下次執行迴圈時從上次未執行的地方開始。

迭代器 生成器的區別?

迭代器是乙個更抽象的概念,任何物件,如果它的類有 next 方法和 iter 方法返回自己本身,對於 string list dict tuple 等這類容器物件,使用 for 迴圈遍歷是很方便的。在後台 for 語句對容器物件呼叫 iter 函式,iter 是 python 的內建函式。iter ...

生成器 迭代器

最近見天一直在看廖大的python教程,卻發現很多基礎看著很簡單,但卻不會應用,歸根結底還是因為理解不到位,故而又將教程學了一遍,並將自己的理解記錄一下,也方便後面查閱。由於沒有相關程式設計基礎,有些理解可能是錯的,敬請批評指正。想深入具體學習廖大部落格請移步廖雪峰的官方 有時候用迴圈生成列表太過繁...

迭代器,生成器

迭代器 生成器 生成器的第1種實現方式 列表生成式改為生成器 python中yield關鍵字 函式中如果有yield,那麼呼叫這個函式的返回值為生成器。當生成器g呼叫next方法,執行函式,知道遇到yield就停止 再執行next,從上一次停止的地方繼續執行 函式中遇return直接退出,不繼續執行...