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构造全体素数、全体自然数这种集合,因为是惰性构造,不会占用很大内存。

你可能感兴趣的:(Python中Iterable和Iterator区别)