Python中Iterable和Iterator区别

Iterable是可迭代对象,Iterator是迭代器。

如果一个数据类型可以直接用for循环遍历,那么它是Iterable

如果一个数据类型可以调用next()函数遍历,那么它是Iterator。Iterator相当于一个惰性的数据流,每次调用next()时才计算下一个值。这种按需计算并生成元素的方法能够减少内存的占用。

由此可见dict类型是Iterable,不是Iterator。list、str也不是Iterator

对于非Iterator的数据类型,可以使用iter()函数将其转换为Iterator

查看一个数据类型是不是Iterable或Iterator,可以:

from collections.abc import Iterator, Iterable


print(isinstance(#datatype, Iterator))

print(isinstance(#datatype, Iterable))

应用:可以利用Iterator构造全体素数、全体自然数这种集合,因为是惰性构造,不会占用很大内存。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容