迭代器

可以直接作用于for循环的对象统称为可迭代对象:Iterable

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

两类可迭代对象:

  1、集合型数据(list、tuple、dict、set、str等)

  2、generator(包括生成器和带yield的generator function)

而生成器不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,直到最后抛出StopIteration错误表示无法继续返回下一个值了。

可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。

可以使用isinstance()判断一个对象是否是Iterator对象。

生成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator(后者不能用next()方法调用)。

从性质上看,是因为Iterator对象表示一个数据流,可被next()调用并不断返回下一个数据,直到无数据是抛出错误。只在需要返回下一个数据时才会计算,所以才不会像列表生成式那样占用内存,甚至Iterator可以表示一个无限大的数据流,例如全体自然数,而这对于list来说是永远不可能的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容