自定义可迭代类MyIterator
class MyIterator:
def __init__(self, data):
self.data = data
self.size = len(data)
self.index = -1
def __iter__(self):
return self
def __next__(self):
self.index = self.index + 1
if self.index >= self.size:
raise StopIteration
else:
return self.data[self.index]
使用创建MyIterator类型的可迭代对象myIterator
>>> from collections.abc import Iterator
>>> myIterator = MyIterator([1,2,3])
# 可以看到该对象是Iterator的一个实例
>>> isinstance(myIterator, Iterator)
True
获得对象的迭代器
啥是迭代器?比如一个Class集合中有多个student,你可以把迭代器当作点名的老师。
# 1. 使用__iter__()获得迭代器
>>> it = myIterator.__iter__()
# 2. 使用内建函数iter()获得迭代器
>>> it = iter(myIterator)
迭代可迭代对象
# 1 可以使用__next__()方法取下一个值
>>> it.__next__()
1
# 2 可以使用内建函数next()取下一个值
>>> next(it)
2