2. 迭代器协议
什么是迭代器协议
迭代器协议需要满足如下两条:
- 所有的可迭代对象能够使用iter(iterable)函数来获取迭代器。
- 迭代器能够使用next(iterator)函数获取下一项数据,在没有下一项数据时引发一个 StopIteration 异常来终止迭代的约定。
能够使用for语句遍历的可迭代对象必须遵守迭代器协议。
迭代器协议示例
title = ('No1', 'No2', 'No3', 'No4')
primes = [2, 3, 5, 7] # 质数
# 访问列表中的所有元素
# 1. 使用 for 语句遍历
# for x in primes:
# print(x)
# else:
# print('遍历结束')
# 2. 使用 迭代器遍历
it1 = iter(primes)
it2 = iter(title)
while True:
try:
x = next(it1)
n = next(it2)
print(n, x)
except StopIteration:
print('遍历结束!')
break
上述列表 primes 是一个可迭代对象,它可以用 for 语句取值,也可以先用 iter(x) 函数返回迭代器,再用next(it) 函数向迭代去取值,知道引发 StopIteration 异常时,说明取值结束。