解决方法
当使用next()
去访问一个已经迭代完的迭代器时,会有这样的报错:StopIteration
解决方法就是给一个默认值:next(iter , 默认值)
,当迭代完成后会输出这个默认值
假设原来循环时的写法是:
a = next(iter_test) # 迭代完成会报错StopIteration
print(a)
改为:
a = next(iter_test,None)
if a is not None:
print(a)
问题解析
如下代码会报错:
iter_list = iter([1, 2, 3, 4])
for i in range(10):
print(next(iter_list))
输出 1 2 3 4 后报错,可改为:
iter_list = iter([1, 2, 3, 4])
for i in range(10):
a = next(iter_list, None)
if a is not None:
print(a)
这样就会输出:1 2 3 4