【Python】IndexErrorの解決方法
こんにちは、にわこまです。
今回は、pythonでリストや配列、タプルに存在しないインデックスを指定したときに発生するIndexErrorの解決方法を紹介します。リスト、配列、タプルは、よくインデックスを指定して値を取得するため気を付けましょう。
誤字脱字や分からない点、解決してほしい問題がありましたらご連絡お願いいたします。
メールまたはTwitterのDMまで!
スポンサードサーチ
IndexErrorの解決方法
1.サイズ以上のインデックスを指定しない
2.インデックスを指定する前に、対象のインデックスが存在するか確認する
※サイズにマイナス1をかけた値より小さいインデックスを指定してはいけない。例えば、サイズ3の配列には-3より小さいインデックスを指定してはいけない。
サイズ以内のインデックスを指定することでIndexErrorを解決することができます。
そもそも「IndexError」とは、「指定したインデックスが範囲外です」というエラーです。
Python IndexErrorの公式ドキュメントはこちら
エラーのサンプルコード(リスト)
エラーが発生するサンプルコードとその実行結果を以下に示します。
l = [3, 4, 6]
print(l[5])
=== 実行結果 ===
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
サイズ以上のインデックスを指定したためエラーが発生しました。
サイズ未満のインデックスを指定することでエラーを解決することができます。
エラーを解決したサンプルコードとその実行結果を以下に示します。
l = [3, 4, 6]
idx = 5
if(-1 * len(l) <= idx and idx < len(l)):
print(l[idx])
else:
print("Out of range.")
=== 実行結果 ===
Out of range.
エラーのサンプルコード(配列)
エラーが発生するサンプルコードとその実行結果を以下に示します。
import numpy as np
a = np.array([[1, 3, 6], [2, 4, 8]])
print(a[0][5])
=== 実行結果 ===
Traceback (most recent call last):
File "out_of_range.py", line 5, in <module>
print(a[0][5])
IndexError: index 5 is out of bounds for axis 0 with size 3
0行目のサイズが3であるのに、5を指定したためエラーが発生しました。
0~2の間でインデックスを指定すればエラーを解決することができます。
エラーを解決したサンプルコードとその実行結果を以下に示します。
import numpy as np
a = np.array([[1, 3, 6], [2, 4, 8]])
# rowは行数、colは列数
row, col = np.shape(a)
idx_row, idx_col = 0, 5
if(-1 * row <= idx_row and idx_row < row
and -1 * col <= idx_col and idx_col < col):
print(a[idx_row][idx_col])
else:
print("Out of range.")
=== 実行結果 ===
Out of range.
エラーのサンプルコード(タプル)
エラーが発生するサンプルコードとその実行結果を以下に示します。
t = [3, 6, 9]
print(t[7])
=== 実行結果 ===
Traceback (most recent call last):
File "out_of_range.py", line 2, in <module>
print(t[7])
IndexError: list index out of range
タプルのサイズより大きいインデックスを指定しているためエラーが発生しました。
サイズより小さい値をインデックスに指定することでエラーを解決できます。
エラーを解決したサンプルコードとその実行結果を以下に示します。
t = [3, 6, 9]
idx = 7
if(-1 * len(t) <= idx and idx < len(t)):
print(t[idx])
else:
print("Out of range.")
=== 実行結果 ===
Out of range.
まとめ
今回は、pythonでリストや配列、タプルに範囲外のインデックスを指定するときに発生するIndexErrorの解決方法を紹介しました。
リストや配列、タプルはインデックスを指定して要素を取得するため、インデックスには気を付けましょう。
改めて解決方法を示します。
1.サイズ以上のインデックスを指定しない
2.インデックスを指定する前に、対象のインデックスが存在するか確認する
※サイズにマイナス1をかけた値より小さいインデックスを指定してはいけない。例えば、サイズ3の配列には-3より小さいインデックスを指定してはいけない。
解決してほしい問題などありましたらメールまたはTwitterのDMまで!
最後までお読みいただきありがとうございます。
スポンサードサーチ