Python で Too Many Indices for Array エラーを修正する

Vaibhav Vaibhav 2022年4月14日
Python で Too Many Indices for Array エラーを修正する

配列またはリストとタプルは、Python の連続したデータ構造です。単一のデータ型と複数のデータ型に属する要素を一緒に格納できます。たとえば、5つの整数要素、3つの浮動小数点数、7つのクラスオブジェクト、2つのセット、および 8つのブール値を含むリストまたは配列またはタプルを作成できます。

これらの要素にアクセスするには、これらの要素のインデックスを使用できます。これらのデータ構造は 0 インデックスベースです。データ構造の長さ以上のインデックスで要素にアクセスしようとしたとします。その場合、IndexError 例外が発生します。

この記事では、Python でこの問題を修正する方法を学びます。

Python で too many indices for array error を修正する方法

IndexError 例外を修正するには、データ構造の長さ以上のインデックスを入力しないようにする必要があります。

上記のアプローチは明らかなものです。ただし、リストまたはタプルから値を取得するためのスタブまたはユーティリティ関数を作成することはできます。この関数は、インデックスが存在する場合にその値を取得し、無効なインデックス値を安全に処理することを保証します。同じことについては、次の Python コードを参照してください。

def get_value(structure, index):
    if not isinstance(index, int):
        return None

    if not isinstance(structure, (list, tuple)):
        return None

    if index >= len(structure):
        return None

    return structure[index]


a = ["Hello", "World", 1, 2.0, 3.00000, True, False]
print(get_value([], 4.0))
print(get_value(a, 4))
print(get_value(a, -1))
print(get_value(None, 8))
print(get_value("Hello World", "Python"))

出力:

None
3.0
False
None
None

指定されたインデックスの値を返す前に、上記のスタブ関数は、インデックスが int 型であり、データ構造が list または tuple 型であり、インデックスがデータ構造の長さよりも小さいことを確認します。すべてのチェックに合格すると、インデックスで必要な値を安全に返すことができます。

get_value() 関数のより簡単な実装の 1つは、try および except ブロックを使用することです。同じことについては、次の Python コードを参照してください。

def get_value(structure, index):
    try:
        return structure[index]
    except:
        return None


a = ["Hello", "World", 1, 2.0, 3.00000, True, False]
print(get_value([], 4.0))
print(get_value(a, 4))
print(get_value(a, -1))
print(get_value(None, 8))
print(get_value("Hello World", "Python"))

出力:

None
3.0
False
None
None

try および except ブロックは、何か問題が発生した場合は None を返し、必要なすべての条件が正常に満たされた場合は実際の値を返します。

著者: Vaibhav Vaibhav
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

関連記事 - Python Error