【Python】IndexError: list index out of rangeエラーの原因と解決方法

/

【Python】IndexError: list index out of rangeエラーの原因と解決方法

本記事ではPythonで発生する「IndexError: list index out of range」エラーの原因と解決方法について解説していきます。

このIndexErrorは、Pythonのリストやタプルを扱っていると、しばしば発生するエラーです。
特にプログラミング初心者の方は遭遇することが多いのではないでしょうか。

IndexError: list index out of rangeエラーは、原因がわかればすぐに解決できるタイプのエラーです。

本記事でエラー原因を確認して、すぐにプログラムの修正をしましょう。

本記事を通して以下の知識を学べます。

学べる知識
  • IndexError: list index out of rangeエラーの原因と解決方法
  • エラーを防ぐための知識

IndexErrorについて

IndexError: list index out of rangeエラーの発生原因

IndexError: list index out of rangeエラーが発生する原因は、
リストに対して範囲外のインデックスを指定しているからです。

リストに格納されている要素にはそれぞれインデックスが振られています。
リストのインデックスは0から振られているので、要素数-1がインデックスの最大値です。

IndexError: list index out of rangeエラーが発生する例

次のようなリストを扱ったプログラムを例に見てみましょう。

lists = [4, 5, 54]
print(lists[0])
# 4

上記プログラムでは、要素を3つ格納したlistsを宣言しています。
これはインデックス0~2の要素を持つリストlistsであるということです。

そしてlistのインデックス0の要素をprintしています。

それでは次のプログラムはどうでしょうか。

lists = [4, 5, 54]
print(lists[3])
# IndexError: list index out of range

上記プログラムでは、IndexError: list index out of rangeエラーが発生してしまいました。

原因はlists[3]で、リストに対して範囲外のインデックスを指定しているからです。

対処方法

このエラーが発生しないようにする対処法はただ一つです。
リストの範囲外インデックスを指定しないことです。

ここではIndexErrorを発生させないための、為になる知識を解説していきます。

リストの要素数の確認:len()メソッド

リストに格納されている要素数を得るためにlen()メソッドが使用されます。

よくしてしまうミスとして、リストの末尾要素を取得するために、len()メソッドを使ってしまうことです。

lists = [4, 5, 54]
num = len(lists)
print(lists[num])
# IndexError: list index out of range

これでは上記のようにIndexErrorが発生してしまいます。
なぜなら、リストのインデックスは0から始まるため、len()メソッドでは末尾のインデックスより1大きいのです。

そのため末尾のインデックスを指定するならば、list[要素数-1]とする必要があります。

lists = [4, 5, 54]
num = len(lists)
print(lists[num-1])
# 54

または末尾の要素を取得するならば、len()メソッドを使わずに-1を指定することで末尾の要素を取得できます。

lists = [4, 5, 54]
print(lists[-1])
# 54

タプルでもIndexErrorが発生する

範囲外インデックスを指定することで発生する本エラーは、リストだけでなくタプルでも同様にエラーが発生します。

tp = (4, 5, 54)
print(tp[3])
# IndexError: tuple index out of range

リストでもタプルでも範囲外のインデックスは指定しないように気を付けましょう。

まとめ

本記事「IndexError: list index out of rangeエラーの原因と解決方法」はいかがでしたか。

本サイトOFFICE54では、その他にも様々なエラーの解決方法を解説しています。
ぜひ他の記事もご参考にしてください。