Beheben den Fehler Too Many Indices for Array in Python
Arrays oder Listen und Tupel sind zusammenhängende Datenstrukturen in Python. Sie können Elemente eines einzelnen Datentyps und mehrere Datentypen zusammen speichern. Beispielsweise können wir eine Liste, ein Array oder ein Tupel haben, das fünf Integer-Elemente, drei Fließkommazahlen, sieben Klassenobjekte, zwei Mengen und acht boolesche Werte enthält.
Um auf diese Elemente zuzugreifen, können wir die Indizes dieser Elemente verwenden. Diese Datenstrukturen sind 0-Index-basiert. Angenommen, wir versuchen, auf ein Element mit einem Index zuzugreifen, der größer oder gleich der Länge der Datenstruktur ist. In diesem Fall stoßen wir auf die Ausnahme IndexError
.
In diesem Artikel erfahren wir, wie Sie dieses Problem in Python beheben können.
So beheben den Too Many Indices for Array
Fehler in Python
Um die Ausnahme IndexError
zu beheben, sollte man darauf achten, dass sie keinen Index eingeben, der gleich oder größer als die Länge der Datenstruktur ist.
Der oben erwähnte Ansatz ist naheliegend. Wir können jedoch immer noch einen Stub oder eine Hilfsfunktion schreiben, um einen Wert aus einer Liste oder einem Tupel abzurufen. Diese Funktion stellt sicher, dass wir den Wert an einem Index erhalten, falls vorhanden, und sicher mit ungültigen Indexwerten umgeht. Siehe dazu den folgenden Python-Code.
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"))
Ausgabe:
None
3.0
False
None
None
Bevor der Wert am angegebenen Index zurückgegeben wird, stellt die obige Stub-Funktion sicher, dass der Index vom Typ int
ist, die Datenstruktur vom Typ list
oder tuple
ist und der Index kleiner als die Länge der Datenstruktur ist . Sobald alle Prüfungen bestanden sind, können wir den erforderlichen Wert sicher am Index zurückgeben.
Eine einfachere Implementierung der Funktion get_value()
wäre die Verwendung des try
- und except
-Blocks. Siehe dazu den folgenden Python-Code.
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"))
Ausgabe:
None
3.0
False
None
None
Der try
- und except
-Block würde None
zurückgeben, wenn etwas schief geht, und einen tatsächlichen Wert, wenn alle erforderlichen Bedingungen erfolgreich erfüllt sind.
Verwandter Artikel - Python Error
- Adresse wird bereits verwendet Fehler in Python
- AttributeError: __Exit__ in Python
- AttributeError: 'Dict'-Objekt hat kein Attribut 'Append' in Python
- AttributeError: 'NoneType'-Objekt hat kein Attribut 'Text' in Python
- AttributeError: Int-Objekt hat kein Attribut
- AttributeError: Modul Urllib hat keine Attributanforderung