De index van een item vinden in een lijst die het bevat in Python
Voor een lijst ["foo", "bar", "baz"]
en een item in de lijst "bar"
, hoe krijg ik de index (1) ervan in Python?
2865
3
Voor een lijst ["foo", "bar", "baz"]
en een item in de lijst "bar"
, hoe krijg ik de index (1) ervan in Python?
Referentie: Data Structures > Meer over Lijsten
Caveats follow
Merk op dat terwijl dit misschien de schoonste manier is om de vraag te beantwoorden zoals gevraagd,
index
is een vrij zwak onderdeel van delijst
API, en ik kan me niet herinneren de laatste keer dat ik het in woede heb gebruikt. Het's gewezen op mij in de commentaren dat, omdat dit antwoord is zwaar verwezen, het moet meer volledig worden gemaakt. Enkele voorbehouden overlist.index
volgen. Het is waarschijnlijk de moeite waard om eerst de docstring ervoor te bekijken:Lineaire tijd-complexiteit in lijst lengte
Een
index
aanroep controleert elk element van de lijst in volgorde, totdat het een overeenkomst vindt. Als je lijst lang is, en je weet niet ongeveer waar in de lijst het voorkomt, dan kan dit zoeken een bottleneck worden. In dat geval moet u een andere gegevensstructuur overwegen. Merk op dat als je ongeveer weet waar je de overeenkomst moet vinden, jeindex
een hint kunt geven. In dit voorbeeld isl.index(999_999, 999_990, 1_000_000)
ruwweg vijf orden van grootte sneller danl.index(999_999)
, omdat de eerste maar 10 regels hoeft te doorzoeken, terwijl de tweede een miljoen regels doorzoekt:Geeft alleen de index van de eerste overeenkomst met zijn argument
Een oproep aan
index
doorzoekt de lijst in volgorde totdat het een overeenkomst vindt, en stopt daar. Als je verwacht indexen van meer overeenkomsten nodig te hebben, moet je een list comprehension gebruiken, of een generator expressie.Op de meeste plaatsen waar ik ooit
index
zou hebben gebruikt, gebruik ik nu een list comprehension of generator expressie omdat die meer generaliseerbaar zijn. Dus als je overweegt om naarindex
te grijpen, kijk dan eens naar deze uitstekende python functies.Geeft een fout als het element niet in de lijst voorkomt
Een oproep aan
index
resulteert in eenValueError
als het item'niet aanwezig is.Als het item mogelijk niet in de lijst aanwezig is, moet u ofwel
item in my_list
(schone, leesbare aanpak), ofindex
aanroep in eentry/except
blok datValueError
afvangt (waarschijnlijk sneller, tenminste als de te doorzoeken lijst lang is, en het item meestal wel aanwezig is).Een ding dat echt nuttig is bij het leren van Python is het gebruik van de interactieve helpfunctie:
die je vaak zal leiden naar de methode die je zoekt.
index()
geeft de eerste index van waarde terug!