迭代器,生成器的区别

迭代器

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

在 for循环 中用到了迭代器,迭代器有next( )方法可以获取容器中下一个对象,直到取完容器中的数据,返回“ StopIteration” 异常。

可以使用isinstance( ) 方法判断一个对象是否可迭代。

生成器

在for中,如果想要枚举它的元素需要事先生成所有的数据,而这些数据保存在内存中,这样容易造成内存溢出的问题。

生成器是只有用到的时候才会生成一个元素,并调用next( )方法生成下一个元素。生成器的标志就是yield关键字,yield能够保证下次执行循环时从上次未执行的地方开始,而且生成器不报StopIteration异常。

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