迭代器是一个实现了迭代器协议的容器对象,它基于以下两个基本方法:
next: 返回容器的下一个元素
iter: 返回迭代器本身
迭代器可以利用内置的iter函数和一个序列来创建。例如:
i = iter('abd')
print(next(i))
创建自定义的迭代器,可以编写一个具有next方法的类,并且这个类提供返回迭代器实例的iter特殊方法:
class CountDown:
def __init__(self, step):
self.step = step
def __next__(self):
if self.step <= 0:
raise StopIteration
self.step -= 1
return self.step
def __iter__(self):
return self
if __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