Viac na
Vyhľadanie indexu položky vzhľadom na zoznam, ktorý ju obsahuje, v jazyku Python
Ako v jazyku Python získam index (1) pre zoznam ["foo", "bar", "baz"]
a položku v zozname "bar"
?
2865
3
Odkaz: Data Structures > More on Lists
Nasledujú upozornenia
Všimnite si, že aj keď je to možno najčistejší spôsob, ako odpovedať na otázku ako je položená,
index
je dosť slabá súčasť APIlist
a nepamätám si, kedy som ju naposledy v hneve použil. V komentároch ma upozornili, že keďže sa na túto odpoveď veľa odkazuje, mala by byť úplnejšia. Nasledujú niektoré upozornenia týkajúce salist.index
. Asi by stálo za to sa na začiatku pozrieť na docstring k nemu:Lineárna časová zložitosť pri dĺžke zoznamu
Volanie
index
kontroluje každý prvok zoznamu v poradí, kým nenájde zhodu. Ak je váš zoznam dlhý a vy neviete, kde približne sa v zozname vyskytuje, toto hľadanie sa môže stať úzkym miestom. V takom prípade by ste mali zvážiť inú dátovú štruktúru. Všimnite si, že ak približne viete, kde sa má nájsť zhoda, môžete daťindexu
nápovedu. Napríklad v tomto úryvku jel.index(999_999, 999_990, 1_000_000)
zhruba o päť rádov rýchlejší ako priamyl.index(999_999)
, pretože prvý musí prehľadávať len 10 záznamov, zatiaľ čo druhý prehľadáva milión:Vráti iba index prvej zhody so svojím argumentom
Volanie príkazu
index
prehľadáva zoznam v poradí, kým nenájde zhodu, a tam sa zastaví. Ak očakávate, že budete potrebovať indexy viacerých zhôd, mali by ste použiť chápanie zoznamu alebo generátorový výraz.Na väčšine miest, kde by som kedysi použil
index
, teraz používam porozumenie zoznamu alebo generátorový výraz, pretože sú všeobecnejšie. Ak teda zvažujete, že siahnete poindexe
, pozrite sa na tieto vynikajúce funkcie jazyka Python.Throws if element not present in list
Volanie príkazu
index
má za následok chybuValueError
, ak prvok'nie je prítomný.Ak sa položka nemusí nachádzať v zozname, mali by ste buď
položka v mojom zozname
(čistý, čitateľný prístup), aleboindex
do blokutry/except
, ktorý zachytí chybuValueError
(pravdepodobne rýchlejšie, aspoň ak je hľadaný zoznam dlhý a položka je zvyčajne prítomná).Pri učení sa jazyka Python je veľmi užitočné používať interaktívnu nápovedu:
ktorá vás často dovedie k hľadanej metóde.
index()
vráti prvý index hodnoty!