1、迭代器对象的创建
迭代器是一种可以被遍历的对象,并且能够作用于next()
函数,迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束,迭代器只能往后遍历,不能回溯。不像列表,你随时可以取后面的数据,也可以返回头取前面的数据,迭代器通常要实现两个基本方法next()
和iter()
。
概括的说,一个对象实现了__iter__()
和__next__()
方法,那么它就是一个迭代器对象。
但是只实现了__iter__()
方法没有实现__next__()
方法,就只是一个可迭代对象。
例如:
# 3.6之前的版本是不需要带.abc的,3.7就会提示需要加.abc
from collections.abc import Iterable, Iterator
class IterA:
def __iter__(self):
# 我们这里返回一个列表
return [1, 2, 3]
class IterB:
pass
iterA = IterA()
iterB = IterB()
# 可以看到iterA 是一个可迭代对象
# iterB 是一个不可迭代对象
print(isinstance(iterA, Iterable)) # True
print(isinstance(iterB, Iterable)) # False
# iterA是一个可迭代对象,但并不是一个迭代器对象
# 因为IterA类中并没有实现next方法
print(isinstance(iterA, Iterator)