【Python】IndexErrorの解決方法

こんにちは、にわこまです。

今回は、pythonでリストや配列、タプルに存在しないインデックスを指定したときに発生するIndexErrorの解決方法を紹介します。リスト、配列、タプルは、よくインデックスを指定して値を取得するため気を付けましょう。

 

誤字脱字や分からない点、解決してほしい問題がありましたらご連絡お願いいたします。

メールまたはTwitterのDMまで!

 

 

スポンサードサーチ


IndexErrorの解決方法

1.サイズ以上のインデックスを指定しない

2.インデックスを指定する前に、対象のインデックスが存在するか確認する

※サイズにマイナス1をかけた値より小さいインデックスを指定してはいけない。例えば、サイズ3の配列には-3より小さいインデックスを指定してはいけない。

 

サイズ以内のインデックスを指定することでIndexErrorを解決することができます。

 

そもそも「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まで!

 

 

最後までお読みいただきありがとうございます。


スポンサードサーチ