Takže jste pracovali se seznamem nebo polem v Pythonu a pravděpodobně jste se jej pokusili rozdělit. Ale místo očekávaného výsledku se zobrazí chyba, která říká, že index je mimo rozsah. Žádný strach, stát se to může každému.

Pojďme prozkoumat, co tato chyba znamená, její příčinu a jak ji bez dalších okolků odstranit.

Co znamená chyba „index seznamu mimo rozsah“ v Pythonu?

Když Python vyvolá chybu „index seznamu mimo rozsah“, znamená to, že jste se pokusili rozdělit seznam za jeho poslední index.

Python identifikuje každou položku v seznamu podle jejího indexu. A index seznamu začíná od nuly. Například, když máte seznam s pěti položkami, jeho první položka je na indexu nula, zatímco poslední je na čtvrtém indexu.

Například v seznamu pěti programovacích jazyků:

Jazyky = ["Python", "Go", "PHP", "C", "Perl"]

Indexování pro výše uvedený seznam je mezi nulou a čtyřmi. Takže pokus o rozřezání pro tisk páté položky, jak je ukázáno níže, dává chybu:

tisknout (jazyky[5])
Výstup:
IndexError: index seznamu je mimo rozsah
instagram viewer

Ve výše uvedeném příkladu se Python pokouší vyhledat pátý index v seznamu, a když jej nemůže najít, vyvolá chybu indexu seznamu. Je to proto, že první prvek (Python) je na indexu nula, zatímco poslední (Perl) je na indexu čtyři.

To je základ chyby „index seznamu mimo rozsah“. Jak již bylo řečeno, Python jej vyvolá vždy, když se pokusíte rozdělit seznam za jeho poslední index.

Jak odstranit chybu „index seznamu mimo rozsah“ v Pythonu

Jak tedy můžete tuto chybu odstranit? Je to snadné.

Kromě předchozí části výše můžete rejstříky vytisknout pomocí a prosmyčka v porozumění seznamu:

indexes = [languages.index (i) pro i v jazycích]
tisknout (indexy)
Výstup:
[0, 1, 2, 3, 4]

Index seznamu je základem dělení v programování. Takže protože znáte nejvyšší index seznamu pro výstup výše (4), můžete dešifrovat limit řezu.

Chcete-li tedy rozdělit seznam a získat poslední položku:

tisknout (jazyky[4])
Výstup:
Perl

Nyní dává správný výsledek.

Co když chcete seznam procházet pomocí jeho indexu?

Kromě běžného Python pro smyčku, můžete také použít koncept indexu k iteraci seznamu. I když tato metoda může vypadat namáhavě, někdy je nevyhnutelná. Hodí se například, pokud chcete seznam seřadit v opačném pořadí.

Tato metoda funguje tak, že nastavíte počáteční index a zvýšíte nebo snížíte jej o jednu až do posledního dostupného indexu.

Chcete-li vytisknout položky s rostoucím indexovým číslem (od první do poslední položky), například:

index = 0 # Počáteční index
pro i v jazycích:
tisknout (Jazyky[index])
index +=1
Výstup:
Krajta
Jít
PHP
C
Perl

Co se ale stane, když nastavíte počáteční index na jedničku místo nuly? Podívej se:

index = 1 # Počáteční index
pro i v jazycích:
tisknout (Jazyky[index])
index +=1
Výstup:
Jít
PHP
C
Perl
IndexError: index seznamu je mimo rozsah

Ve výše uvedeném příkladu začíná indexování od druhé položky (index jedna, Jít). Takže při inkrementaci se smyčka nezastaví, dokud nedokončí počítání pěti položek. To nutí index ke zvýšení o jednu až do poslední položky.

Řez tedy narazí na pátý index, který není dostupný. Takže to vyvolá chybu indexu. Znamená to, že index se u každé položky zvyšuje následujícím způsobem:

1=1, 1+1=2, 1+2=3, 1+3=4, 1+4=5 

Místo správného vzoru, který je:

0=0, 0+1=1, 1+1=2, 1+2=3, 1+3=4

Jak můžete vidět, nejvyšší hodnota výše uvedeného indexu je čtyři, což je správné, protože smyčka začíná zvyšovat indexování od nuly.

Proto nastavením počátečního indexu na nulu, jak jste to udělali v prvním příkladu v této části, se odstraní chyba „index seznamu mimo rozsah“:

index = 0 # Počáteční index
pro i v jazycích:
tisknout (Jazyky[index])
index +=1 #Zvyšte index o jednu pro každou iteraci

Chcete-li použít tento koncept pro výstup položek v opačném pořadí, budete muset odečíst jednu od délky pole. Takže to přinutí index začít od čtyř a odpočítávat až do prvního indexu, nuly.

To je užitečné, pokud si nejste jisti hodnotou délky seznamu pocházejícího ze zdroje, řekněme z databáze.

Zde je příklad:

index = (len (jazyky)-1)
pro i v jazycích:
tisknout (Jazyky[index])
index -=1 #Snižte index o jednu pro každou iteraci
Výstup:
Perl
C
PHP
Jít
Krajta

Pokud se však nepodaří odečíst jednu z délky seznamu, způsobí chybu „index seznamu mimo rozsah“:

index = (len (jazyky)-1)
pro i v jazycích:
tisknout (Jazyky[index])
index -=1
Výstup:
IndexError: index seznamu je mimo rozsah

Výše uvedený kód vyvolá chybu indexu, protože délka seznamu je pět a pokusí se začít indexovat z pěti na nulu, zatímco nejvyšší index je čtyři. Znamená to tedy, že seznam nemá pátý index (šestou položku).

Získejte Creative Handling Lists v Pythonu

Chyby Pythonu jsou pro člověka přátelské a obvykle čitelné. Vždy je to umožňuje v rozumné míře sledovat.

Jak jste se dozvěděli, odstranění chyby seznamu indexu mimo rozsah je docela snadné. Pokud se ve svých budoucích programech setkáte s touto chybou, bez ohledu na to, jak složitý je seznam, můžete problém vyřešit pomocí konceptů vysvětlených v tomto příspěvku.

Neváhejte být kreativní se složitými seznamy. Možná se také budete chtít naučit, jak třídit seznamy v Pythonu ve svém volném čase, abyste se v tom všem lépe orientovali.

Jak třídit téměř jakýkoli typ seznamu v Pythonu

Seznamy s více datovými typy se mohou rychle vymknout kontrole. Zde je návod, jak je třídit pomocí Pythonu.

Přečtěte si další

PodíltweetE-mailem
Související témata
  • Programování
  • Krajta
  • Programování
  • Tipy pro kódování
O autorovi
Idowu Omisola (136 publikovaných článků)

Idowu je nadšený z jakékoli chytré technologie a produktivity. Ve volném čase si hraje s kódováním a když se nudí, přepne na šachovnici, ale také se rád jednou za čas odpoutá od rutiny. Jeho vášeň ukazovat lidem cestu kolem moderních technologií ho motivuje k dalšímu psaní.

Více od Idowu Omisola

Přihlaste se k odběru našeho newsletteru

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné e-knihy a exkluzivní nabídky!

Chcete-li se přihlásit k odběru, klikněte sem