迭代器
容器(列表、集合、元组、字典)都是可迭代的。可迭代对象中有iter( )方法,加上next( )方法形成一个迭代器。
在 for循环 中用到了迭代器,迭代器有next( )方法可以获取容器中下一个对象,直到取完容器中的数据,返回“ StopIteration” 异常。
可以使用isinstance( ) 方法判断一个对象是否可迭代。
生成器
在for中,如果想要枚举它的元素需要事先生成所有的数据,而这些数据保存在内存中,这样容易造成内存溢出的问题。
生成器是只有用到的时候才会生成一个元素,并调用next( )方法生成下一个元素。生成器的标志就是yield关键字,yield能够保证下次执行循环时从上次未执行的地方开始,而且生成器不报StopIteration异常。