PythonのIndexErrorとその対処方法
Pythonでコーディングしていると、時々「IndexError」というエラーに遭遇することがあります。これは、リストやタプルなどのシーケンス型のオブジェクトで、範囲外のインデックスを指定したときに発生します。
ここでは、そのような「IndexError」が出た場合の具体的な対処方法を、ソースコードとともに紹介します。
Pythonのエラー一覧はコチラ
-
【Python】よく起こるエラー一覧 11個のPythonのエラー事例と対処方法を確認して、適切に対処しよう!
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 Python ...
続きを見る
1. リストの長さを確認する
まずは、シンプルなエラーの例から見ていきましょう。以下のコードを見てください。
1 2 |
list1 = [0, 1, 2, 3, 4] print(list1[5]) |
ここでは、5つの要素を持つリストから、インデックス5の要素を取り出そうとしています。しかし、Pythonのインデックスは0から始まるため、インデックス5は存在しないのです。これが「IndexError」です。
出力結果
IndexError: list index out of range
このエラーを避けるためには、アクセスする前にリストの長さを確認しましょう。以下のように修正します。
1 2 3 4 5 |
list1 = [0, 1, 2, 3, 4] if len(list1) > 5: print(list1[5]) else: print("Index is out of range.") |
出力結果
Index is out of range.
KindleUnlimited会員であれば、全ての本をご覧頂けます。 リストとラムダ式を理解すれば、Pythonプログラミングの世界が変わる 第1版
2. try-exceptを使用する
次に、try-except文を使用してエラーを捕捉する方法を見てみましょう。try-except文は、エラーが発生しそうなコードをtryブロックに書き、その後に続くexceptブロックでエラーを捕捉します。
1 2 3 4 5 |
list1 = [0, 1, 2, 3, 4] try: print(list1[5]) except IndexError: print("Index is out of range.") |
このコードでは、エラーが発生した場合、プログラムが停止するのではなく、「Index is out of range.」と出力されます。
出力結果
Index is out of range.
3. if文を使用して条件分岐を行う
if文を使用して条件分岐を行うことも可能です。リストの長さとアクセスしたいインデックスを比較し、インデックスがリストの長さよりも小さい場合のみアクセスを試みます。
1 2 3 4 5 6 |
list1 = [0, 1, 2, 3, 4] index = 5 if index < len(list1): print(list1[index]) else: print("Index is out of range.") |
このコードでは、インデックスがリストの長さを超えている場合、「Index is out of range.」と出力されます。
出力結果
Index is out of range.
4. リストの範囲内のインデックスを保証する
アクセスするインデックスがリストの範囲内であることを保証する、つまりリストの長さに対してモジュロ演算(%)を使用する方法もあります。
1 2 3 |
list1 = [0, 1, 2, 3, 4] index = 5 print(list1[index % len(list1)]) |
このコードでは、インデックスがリストの長さを超えている場合でも、モジュロ演算により範囲内のインデックスに変換されます。
出力結果
0
5. リスト関数を使用する
最後に、Pythonのリスト関数を使用して安全に要素にアクセスする方法を見てみましょう。get()関数は、指定したインデックスが存在しない場合にデフォルトの値を返します。ただし、この関数はPythonの辞書型でのみ使用可能で、リストでは使用できません。ですから、この方法を使用するには辞書型にデータを変換する必要があります。
1 2 3 |
list1 = [0, 1, 2, 3, 4] dict1 = {i: v for i, v in enumerate(list1)} print(dict1.get(5, "Index is out of range.")) |
このコードでは、リストが辞書型に変換され、get()関数により安全に要素にアクセスされます。指定したインデックスが存在しない場合、「Index is out of range.」と出力されます。
出力結果
Index is out of range.
まとめ
以上、PythonのIndexErrorとその対処方法について5つの例を見てきました。エラーは適切に対処すれば怖くないものです。この記事が、IndexErrorに遭遇したときの参考になれば幸いです。
最後まで読んで頂き、ありがとうございました。
Pythonのエラー一覧はコチラ
-
【Python】よく起こるエラー一覧 11個のPythonのエラー事例と対処方法を確認して、適切に対処しよう!
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 Python ...
続きを見る