In Python kann die Auswahl bestimmter Elemente aus einer Liste basierend auf ihrem Index eine häufige Anforderung sein. Eine kürzlich gestellte Frage befasste sich mit diesem Szenario und präsentierte eine Liste von ganzen Zahlen a und eine Liste von Indizes b. Das Ziel bestand darin, eine neue Liste c zu erstellen, die Elemente von a enthält, die den Indizes in b entsprechen.
Die bereitgestellte Lösung nutzte ein Listenverständnis, das über die Indizes in b iteriert und die entsprechenden Elemente aus a auswählt:
a = [-2, 1, 5, 3, 8, 5, 6] b = [1, 2, 5] c = [a[i] for i in b]
Obwohl dieser Ansatz durchaus gültig ist, stellte sich die Frage, ob es effizientere Methoden gibt, um das Gewünschte zu erreichen Ergebnis.
Operator.itemgetter
Eine alternative Lösung beinhaltet die Verwendung der Funktion „operator.itemgetter“ aus dem Operatormodul von Python:
from operator import itemgetter a = [-2, 1, 5, 3, 8, 5, 6] b = [1, 2, 5] print(itemgetter(*b)(a))
Numpy Array Indexing
Für Fälle, in denen die Leistung entscheidend ist, NumPy bietet optimierte Array-Handhabungsfunktionen:
import numpy as np a = np.array([-2, 1, 5, 3, 8, 5, 6]) b = [1, 2, 5] print(list(a[b]))
Bewertung von Lösungen
Bemerkenswert ist, dass die ursprüngliche Lösung mit Listenverständnis weiterhin eine praktikable Option bleibt. Es ist prägnant und leicht verständlich. Die Itemgetter- und NumPy-Methoden bieten zwar potenzielle Leistungsvorteile, können jedoch für kleinere Listen oder Situationen, in denen die Geschwindigkeit weniger wichtig ist, übertrieben sein.
Letztendlich hängt die Wahl der zu verwendenden Methode von Faktoren wie der Größe ab der Liste und die spezifischen Leistungsanforderungen der Anwendung.
Das obige ist der detaillierte Inhalt vonWie kann ich in Python effizient auf mehrere Listenelemente per Index zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!