可迭代对象(Iterable)
定义
可通过循环来访问对象集合中的每一个元素。
from collections.abc import Iterable
isinstance([],Iterable) # True
isinstance({},Iterable) # True
isinstance('abc',Iterable) # True
isinstance((x for x in range(10)),Iterable) # True
isinstance(100,Iterable) # False
迭代器(Iterator)
定义
可通过可迭代对象生成,只支持一次迭代,迭代结束时报StopIteration异常
from collections.abc import Iterator
isinstance([],Iterator) # False
isinstance(iter([]),Iterator) # True,Iter()生成对象的迭代器
isinstance((x for x in range(10)),Iterator) # True
优势
在构建迭代器时,不是将所有的元素一次性的加载,而是等调用next方法时返回元素,所以不需要考虑内存的问题。
应用场景
- 数列的数据规模巨大
- 数列有规律,但是不能使用列表推导式描述。