Suche nach dem Index eines Elements in einer Liste in Python
Wie erhalte ich in Python für eine Liste ""foo", "bar", "baz"" und ein Element in der Liste ""bar"" dessen Index (1)?
2865
3
Wie erhalte ich in Python für eine Liste ""foo", "bar", "baz"" und ein Element in der Liste ""bar"" dessen Index (1)?
Referenz: Datenstrukturen > Mehr über Listen
Caveats folgen
Beachten Sie, dass dies zwar vielleicht die sauberste Art ist, die Frage so wie sie gestellt wurde zu beantworten, aber
index
ist eine eher schwache Komponente derlist
API, und ich kann mich nicht erinnern, wann ich sie das letzte Mal im Zorn benutzt habe. In den Kommentaren wurde ich darauf hingewiesen, dass diese Antwort vollständiger sein sollte, da sie stark referenziert ist. Es folgen einige Vorbehalte zulist.index
. Es lohnt sich wahrscheinlich, zunächst einen Blick in den Docstring dafür zu werfen:Lineare Zeitkomplexität bei Listenlänge
Ein
index
-Aufruf überprüft jedes Element der Liste der Reihe nach, bis er eine Übereinstimmung findet. Wenn Ihre Liste lang ist und Sie nicht ungefähr wissen, an welcher Stelle in der Liste sie vorkommt, könnte diese Suche zu einem Engpass werden. In diesem Fall sollten Sie eine andere Datenstruktur in Betracht ziehen. Wenn Sie ungefähr wissen, wo die Übereinstimmung zu finden ist, können Sieindex
einen Hinweis geben. In diesem Ausschnitt ist beispielsweisel.index(999_999, 999_990, 1_000_000)
etwa fünf Größenordnungen schneller alsl.index(999_999)
, weil ersteres nur 10 Einträge durchsuchen muss, während letzteres eine Million durchsucht:Gibt nur den Index der ersten Übereinstimmung mit seinem Argument zurück
Ein Aufruf von
index
durchsucht die Liste der Reihe nach, bis er eine Übereinstimmung findet, und hält dort an. Wenn Sie erwarten, dass Sie die Indizes weiterer Übereinstimmungen benötigen, sollten Sie ein Listenverständnis oder einen Generatorausdruck verwenden.An den meisten Stellen, an denen ich früher
index
verwendet hätte, verwende ich jetzt ein Listenverständnis oder einen Generatorausdruck, weil sie verallgemeinerbar sind. Wenn Sie also in Erwägung ziehen, zuindex
zu greifen, werfen Sie einen Blick auf diese hervorragenden Python-Funktionen.Wirft, wenn Element nicht in Liste vorhanden
Ein Aufruf von
index
resultiert in einemValueError
, wenn das Element nicht vorhanden ist.Wenn das Element in der Liste nicht vorhanden sein könnte, sollten Sie entweder
item in my_list
nachsehen (sauberer, lesbarer Ansatz), oderindex
-Aufruf in einentry/except
-Block verpacken, derValueError
abfängt (wahrscheinlich schneller, zumindest wenn die zu durchsuchende Liste lang ist, und der Eintrag normalerweise vorhanden ist).Eine Sache, die beim Erlernen von Python sehr hilfreich ist, ist die Verwendung der interaktiven Hilfefunktion:
die Sie oft zu der Methode führt, die Sie suchen.
index()
gibt den ersten Index von value zurück!