迭代器是一个实现了迭代器协议的容器对象,它基于以下两个基本方法:
next: 返回容器的下一个元素
iter: 返回迭代器本身
迭代器可以利用内置的iter函数和一个序列来创建。例如:
i = iter('abd')print(next(i))
创建自定义的迭代器,可以编写一个具有next方法的类,并且这个类提供返回迭代器实例的iter特殊方法:
class CountDown:def __init__(self, step):self.step = stepdef __next__(self):if self.step <= 0:raise StopIterationself.step -= 1return self.stepdef __iter__(self):return selfif __name__ == '__main__':for i in CountDown(3):print(i)
for i in [1, 2, 3, 4]:pass# 完全等价于:it = iter([1, 2, 3, 4]) #首先获得iterable对象;# 循环while True:try:# 获得下一个值x = next(it)except StopIteration:# 遇到StopIteration终止break
