迭代器概念(day4)
可以直接作用于for循环的数据类型有以下几种:
一类是集合数据类型,如:list、tuple、dict、set、str等
一类是generator,包括生成器和带yield的generator function。
这些可以直接作用于for循环的对象统称为可迭代对象:Iterable
可以使用isinstance()判断一个对象是否是Iterable对象:
from collections import Iterable print(isinstance([], Iterable)) # true print(isinstance({}, Iterable)) # true print(isinstance((x for x in range(6)), Iterable)) # true print(isinstance('abc', Iterable)) # true print(isinstance(66, Iterable)) # false
而生成器不断可以作用于for循环,哈可以被next()函数不断调用并返回下一个值,
知道最后抛出StopIteration错误表示无法继续返回下一个值。
可以被next()函数不断调用并返回下一个值的对象称为迭代器:Iterator
类似的,可以用isinstance()判断一个对象是否是Iterator对象:
1 from collections import Iterator 2 print(isinstance([], Iterator)) # true 3 print(isinstance({}, Iterator)) # true 4 print(isinstance((x for x in range(6)), Iterator)) # true 5 print(isinstance('abc', Iterator)) # true 6 print(isinstance(66, Iterator)) # false