エラー辞典

StopIteration

イテレータ(順番に値を取り出せるオブジェクト)の要素をすべて取り出し終えたときに発生するエラーです。

原因

for文を使わずに next() を直接呼び出し、取り出せる値がなくなった後もさらにnext()を呼んでしまうことが原因です。

エラーになるコード例

numbers = iter([1, 2])
print(next(numbers))
print(next(numbers))
print(next(numbers))
StopIteration

修正版

numbers = [1, 2]
for n in numbers:
    print(n)

よくある間違い

  • next()を使うとき、要素数を超えて呼び出してしまう
  • for文で書けば発生しない処理を、あえてnext()で手動制御しようとする

← エラー辞典に戻る