Finne indeksen til et element gitt en liste som inneholder det i Python
For en liste ["foo", "bar", "baz"]
og et element i listen `"bar", hvordan får jeg indeksen (1) i Python?
2865
3
For en liste ["foo", "bar", "baz"]
og et element i listen `"bar", hvordan får jeg indeksen (1) i Python?
Referanse: Datastrukturer > Mer om lister
Forbehold følger
Merk at selv om dette kanskje er den reneste måten å svare på spørsmålet som stilt, er
index
en ganske svak komponent ilist
API, og jeg kan ikke huske sist jeg brukte den i sinne. Det har blitt påpekt for meg i kommentarene at fordi dette svaret er sterkt referert, bør det gjøres mer fullstendig. Noen advarsler omlist.index
følger. Det er sannsynligvis verdt å først ta en titt på dokumentstrengen for den:Lineær tidskompleksitet i listelengde
Et
index
-kall sjekker hvert element i listen i rekkefølge til det finner et treff. Hvis listen din er lang, og du ikke vet omtrent hvor i listen den forekommer, kan dette søket bli en flaskehals. I så fall bør du vurdere en annen datastruktur. Legg merke til at hvis du vet omtrent hvor du skal finne søket, kan du giindex
et hint. I dette utdraget er for eksempell.index(999_999, 999_990, 1_000_000)
omtrent fem størrelsesordener raskere enn direktel.index(999_999)
, fordi førstnevnte bare trenger å søke i 10 oppføringer, mens sistnevnte søker i en million:Returnerer bare indeksen for første treff til argumentet.
Et kall til
index
søker gjennom listen i rekkefølge til den finner et treff, og stopper der. Hvis du forventer å trenge indekser for flere treff, bør du bruke en listeforståelse eller et generatoruttrykk.De fleste steder der jeg en gang ville ha brukt
index
, bruker jeg nå en listeforståelse eller generatoruttrykk fordi de er mer generaliserbare. Så hvis du vurderer å nå forindex
, ta en titt på disse utmerkede python-funksjonene.Kaster hvis elementet ikke er til stede i listen
Et kall til
index
resulterer i enValueError
hvis elementet ikke er til stede.Hvis elementet kanskje ikke er til stede i listen, bør du enten
item in my_list
(ren, lesbar tilnærming), ellerindex
-kallet inn i entry/except
-blokk som fanger oppValueError
(sannsynligvis raskere, i hvert fall når listen som skal gjennomsøkes er lang, og elementet vanligvis finnes).En ting som er veldig nyttig for å lære Python, er å bruke den interaktive hjelpefunksjonen:
som ofte vil lede deg til metoden du leter etter.
index()
returnerer den første verdiindeksen!