StopIteration
イテレータ(順番に値を取り出せるオブジェクト)の要素をすべて取り出し終えたときに発生するエラーです。
原因
for文を使わずに next() を直接呼び出し、取り出せる値がなくなった後もさらにnext()を呼んでしまうことが原因です。
エラーになるコード例
numbers = iter([1, 2])
print(next(numbers))
print(next(numbers))
print(next(numbers))修正版
numbers = [1, 2]
for n in numbers:
print(n)よくある間違い
- next()を使うとき、要素数を超えて呼び出してしまう
- for文で書けば発生しない処理を、あえてnext()で手動制御しようとする