迭代器,生成器的區別

迭代器

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

在 for循環 中用到了迭代器,迭代器有next( )方法可以獲取容器中下一個對象,直到取完容器中的數據,返回“ StopIteration” 異常。

可以使用isinstance( ) 方法判斷一個對象是否可迭代。

生成器

在for中,如果想要枚舉它的元素需要事先生成所有的數據,而這些數據保存在內存中,這樣容易造成內存溢出的問題。

生成器是隻有用到的時候纔會生成一個元素,並調用next( )方法生成下一個元素。生成器的標誌就是yield關鍵字,yield能夠保證下次執行循環時從上次未執行的地方開始,而且生成器不報StopIteration異常。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章