Python IndexError:リスト割り当てインデックスが範囲外です
-
Python
IndexError: リスト割り当てインデックスが範囲外
-
Python の
IndexError: リスト割り当てインデックスが範囲外
を修正する -
append()
関数を使用してIndexError: リスト代入インデックスが範囲外
を修正 -
IndexError: list assign index out of range
をinsert()
関数を使用して修正 - まとめ
Python では、存在すらしていないリストのインデックスにアクセスしようとすると、IndexError: list assignment index out of range
が発生します。 インデックスは、文字列、リスト、配列などの iterable 内の値の場所です。
この記事では、Python でインデックス エラー リスト割り当てインデックス範囲外エラーを修正する方法を学習します。
Python IndexError: リスト割り当てインデックスが範囲外
エラーを理解して解決するために、エラーの例を見てみましょう。
コード例:
# error program --> IndexError: list assignment index out of range
i = [7, 9, 8, 3, 7, 0] # index range (0-5)
j = [1, 2, 3] # index range (0-3)
print(i, "\n", j)
print(f"\nLength of i = {len(i)}\nLength of j = {len(j)}")
print(f"\nValue at index {1} of list i and j are {i[1]} and {j[1]}")
print(
f"\nValue at index {3} of list i and j are {i[3]} and {j[3]}"
) # error because index 3 isn't available in list j
出力:
[7, 9, 8, 3, 7, 0]
[1, 2, 3]
Length of i = 6
Length of j = 3
Value at index 1 of list i and j are 9 and 2
IndexError: list assignment index out of range
上記のコードで IndexError: list assignment index out of range
の背後にある理由は、リスト j
では利用できないインデックス 3
の値にアクセスしようとしているからです。
Python の IndexError: リスト割り当てインデックスが範囲外
を修正する
このエラーを修正するには、このケース リストのイテラブルのインデックスを調整する必要があります。 2つのリストがあり、リスト a
をリスト b
に置き換えたいとしましょう。
コード例:
a = [1, 2, 3, 4, 5, 6]
b = []
k = 0
for l in a:
b[k] = l # indexError --> because the length of b is 0
k += 1
print(f"{a}\n{a}")
出力:
IndexError: list assignment index out of range
長さが 0
であるため、リスト b
に値を割り当てることはできず、kth
インデックス b[k] = I
に値を追加しようとしているため、インデックス エラーが発生しています。 append()
と insert()
を使用して修正できます。
append()
関数を使用して IndexError: リスト代入インデックスが範囲外
を修正
append()
関数は、項目 (値、文字列、オブジェクトなど) をリストの最後に追加します。 インデックスの頭痛を管理する必要がないため、これは役に立ちます。
コード例:
a = [1, 2, 3, 4, 5, 6]
b = []
k = 0
for l in a:
# use append to add values at the end of the list
j.append(l)
k += 1
print(f"List a: {a}\nList b: {a}")
出力:
List a: [1, 2, 3, 4, 5, 6]
List b: [1, 2, 3, 4, 5, 6]
IndexError: list assign index out of range
を insert()
関数を使用して修正
insert()
関数は、リストの k'th
の位置に値を直接挿入できます。 insert(index, value)
という 2つの引数を取ります。
コード例:
a = [1, 2, 3, 5, 8, 13]
b = []
k = 0
for l in a:
# use insert to replace list a into b
j.insert(k, l)
k += 1
print(f"List a: {a}\nList b: {a}")
出力:
List a: [1, 2, 3, 4, 5, 6]
List b: [1, 2, 3, 4, 5, 6]
上記の 2つの解決策に加えて、Python のリストを他の言語の通常の配列のように扱いたい場合は、リスト サイズを None
値で事前に定義できます。
コード例:
a = [1, 2, 3, 4, 5, 6]
b = [None] * len(i)
print(f"Length of a: {len(a)}")
print(f"Length of b: {len(b)}")
print(f"\n{a}\n{b}")
出力:
Length of a: 6
Length of b: 6
[1, 2, 3, 4, 5, 6]
[None, None, None, None, None, None]
リストをダミー値 None
で定義したら、それに応じて使用できます。
まとめ
Python で IndexError: list assignment index out of range
を処理するには、さらにいくつかの手動の手法とロジックが存在する可能性があります。 この記事では、2つのリストを置き換えるときに Python でインデックス エラーを処理するのに役立つ 2つの一般的なリスト関数の概要を説明します。
また、リストを事前に定義し、それを他のプログラミング言語の配列と同様の配列として扱う代替ソリューションについても説明しました。
Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedIn関連記事 - Python Error
- AttributeError の解決: 'list' オブジェクト属性 'append' は読み取り専用です
- AttributeError の解決: Python で 'Nonetype' オブジェクトに属性 'Group' がありません
- AttributeError: 'generator' オブジェクトに Python の 'next' 属性がありません
- AttributeError: 'numpy.ndarray' オブジェクトに Python の 'Append' 属性がありません
- AttributeError: Int オブジェクトに属性がありません
- AttributeError: Python で 'Dict' オブジェクトに属性 'Append' がありません