IndexError: list index out of range の原因と対処法【Pythonエラー解説】

Last Updated on 2025年7月28日

Pythonでリスト(list)を扱う際に多くの人が遭遇するエラーに IndexError: list index out of range があります。本記事ではこのエラーの意味、原因、そして解決方法を、初心者にもわかりやすく解説します。

目次

エラー内容

Pythonのコードを実行した際、以下のようなエラーが表示されることがあります。

このエラーメッセージは「リストのインデックスが範囲外です」と訳されます。つまり、存在しないインデックスにアクセスしようとした場合に発生します。

原因

IndexError: list index out of range の原因は、主に次のようなケースです。

1. リストの長さを超えたインデックスにアクセスしている

たとえば以下のようなコード:

Pythonのインデックスは0から始まるため、my_list[3] は存在しません(0〜2の範囲)。

2. 空のリストにアクセスしている

要素が何も入っていないリストにインデックスでアクセスすれば当然エラーになります。

3. forループやwhileループで範囲の指定を誤っている

このコードでは range(4) により i = 0〜3 までループするため、 i = 3 でエラーが出ます。

4. リストの長さが動的に変化している

プログラムの途中でリストが削除・追加される場合も要注意です。

対処法

上記のような状況に対して、以下のような対策をとることでエラーを防ぐことができます。

1. リストの長さを確認する

2. try-exceptで例外処理をする

安全なコードのために例外処理を使うことも有効です。

3. enumerateやfor-eachを活用する

ループ時にインデックスを意識せずに処理することもできます。

また、インデックスが必要な場合は enumerate を使うと安全です。

4. whileループでの条件を厳密にチェック

補足

Pythonのリストのインデックスは負の値でも使えることをご存じでしょうか?これは末尾からのアクセスを意味します。

ただし、負のインデックスもリストの範囲を超えると同様に IndexError が発生します。

また、二次元リストや入れ子のリストでは、各階層でインデックスを丁寧に確認する必要があります。

まとめ

Pythonで IndexError: list index out of range が発生した場合、まずは「リストの長さ」と「アクセスしようとしているインデックス」が合っているかを確認しましょう。リストのサイズは0から数えること、そしてループや動的な操作によってリストの長さが変わる可能性があることにも注意が必要です。

このエラーはPython初学者が最もよく遭遇するエラーのひとつですが、上記のようなポイントを押さえておけば回避は難しくありません。今後の開発にぜひお役立てください。