学习目标
1、掌握Iterable和Iterator的使用和区别。
Iterable和Iterator
可以直接作用于for循环的对象称为可迭代对象:Iterable。可迭代对象有一种是集合数据类型,如list、tuple、dict、set、str等,还有一种是generator,比如生成器和带yield的generator function。可以使用isinstance()函数判断对象是否是Iterable对象:
>>> from collections.abc import Iterable
>>> isinstance([], Iterable) #list
True
>>> isinstance({}, Iterable) #set
True
>>> isinstance((1,2), Iterable) #dict
True
>>> isinstance('abc', Iterable) #str
True
>>> isinstance((x for x in range(10)), Iterable) #generator
True
>>> isinstance(100, Iterable) #int不是可迭代对象
False
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。生成器都是Iterator。可以使用isinstance()函数判断一个对象是否Iterator对象:
>>> from collections.abc import Iterator
>>> isinstance((x for x in range(10)), Iterator)
True
>>> isinstance([], Iterator)
False
>>> isinstance({}, Iterator)
False
>>> isinstance('abc', Iterator)
False
把list、str等Iterable变成Iterator可以使用iter()函数:
>>> isinstance(iter([]), Iterator)
True
>>> isinstance(iter('abc'), Iterator)
True