Takže ste pracovali so zoznamom alebo poľom v Pythone a pravdepodobne ste sa ho pokúsili rozdeliť. Ale namiesto očakávaného výsledku sa zobrazí chyba, ktorá hovorí, že index je mimo rozsahu. Žiadny strach, stať sa to môže každému.
Poďme preskúmať, čo táto chyba znamená, jej príčinu a ako ju bez ďalších okolkov odstrániť.
Čo znamená chyba „index zoznamu mimo rozsahu“ v Pythone?
Keď Python vyhodí chybu „index zoznamu mimo rozsahu“, znamená to, že ste sa pokúsili rozdeliť zoznam za jeho posledný index.
Python identifikuje každú položku v zozname podľa jej indexu. A index zoznamu začína od nuly. Napríklad, keď máte zoznam s piatimi položkami, jeho prvá položka je na indexe nula, zatiaľ čo posledná je na štvrtom indexe.
Napríklad v zozname piatich programovacích jazykov:
Jazyky = ["Python", "Go", "PHP", "C", "Perl"]
Indexovanie vyššie uvedeného zoznamu je medzi nulou a štyrmi. Takže pokus o rozrezanie na vytlačenie piatej položky, ako je uvedené nižšie, zobrazí chybu:
tlačiť (jazyky[5])
Výkon:
IndexError: index zoznamu je mimo rozsahu
Vo vyššie uvedenom príklade sa Python pokúša vyhľadať piaty index v zozname, a keď ho nemôže nájsť, vyvolá chybu indexu zoznamu. Je to preto, že prvý prvok (Python) je na indexe nula, zatiaľ čo posledný (Perl) je na indexe štyri.
To je základ chyby „index zoznamu mimo rozsahu“. Ako už bolo povedané, Python ho vyhodí vždy, keď sa pokúsite rozdeliť zoznam za jeho posledný index.
Ako odstrániť chybu „index zoznamu mimo rozsahu“ v Pythone
Ako teda môžete túto chybu odstrániť? Je to ľahké.
Okrem predchádzajúcej časti vyššie môžete indexy vytlačiť pomocou a preslučka v porozumení zoznamu:
indexy = [languages.index (i) pre i v jazykoch]
tlačiť (indexy)
Výkon:
[0, 1, 2, 3, 4]
Index zoznamu je základom krájania v programovaní. Takže keďže poznáte najvyšší index zoznamu pre výstup vyššie (4), môžete rozlúštiť limit rezu.
Ak chcete zoznam rozdeliť a získať poslednú položku:
tlačiť (jazyky[4])
Výkon:
Perl
Teraz vypíše správny výsledok.
Čo ak chcete zoznam prechádzať pomocou jeho indexu?
Okrem bežného Python pre slučku, môžete tiež použiť koncept indexu na iteráciu cez zoznam. Aj keď táto metóda môže vyzerať namáhavo, niekedy sa jej nedá vyhnúť. Napríklad je to užitočné, ak chcete zoznam zoradiť v opačnom poradí.
Táto metóda funguje tak, že nastavíte počiatočný index a zvyšujete alebo znižujete ho o jednu až po posledný dostupný index.
Ak chcete vytlačiť položky so zvyšujúcim sa indexovým číslom (od prvej po poslednú položku), napríklad:
index = 0 # Počiatočný index
pre i v jazykoch:
tlač (Jazyky[index])
index +=1
Výkon:
Python
Choď
PHP
C
Perl
Čo sa však stane, ak nastavíte počiatočný index na 1 namiesto nuly? Pozrieť sa:
index = 1 # Počiatočný index
pre i v jazykoch:
tlač (Jazyky[index])
index +=1
Výkon:
Choď
PHP
C
Perl
IndexError: index zoznamu je mimo rozsahu
Vo vyššie uvedenom príklade indexovanie začína od druhej položky (index jedna, Choď). Takže počas inkrementácie sa cyklus nezastaví, kým nedokončí počítanie piatich položiek. To núti index zvyšovať sa o jednu až po poslednú položku.
Výrez teda narazí na piaty index, ktorý nie je dostupný. Takže vyhodí chybu indexu. Znamená to, že index sa pre každú položku zvyšuje nasledujúcim spôsobom:
1=1, 1+1=2, 1+2=3, 1+3=4, 1+4=5
Namiesto správneho vzoru, ktorý je:
0=0, 0+1=1, 1+1=2, 1+2=3, 1+3=4
Ako vidíte, najvyššia hodnota vyššie uvedeného indexu je štyri, čo je správne, pretože slučka začína zvyšovať indexovanie od nuly.
Preto nastavenie počiatočného indexu na nulu, ako ste to urobili v prvom príklade v tejto časti, odstráni chybu „zoznam indexu je mimo rozsahu“:
index = 0 # Počiatočný index
pre i v jazykoch:
tlač (Jazyky[index])
index +=1 #Zvýšte index o jeden pre každú iteráciu
Ak chcete použiť tento koncept na výstup položiek v opačnom poradí, budete musieť jednu odpočítať od dĺžky poľa. Takže to prinúti index začať od štvorky a odpočítať po prvý index, nulu.
Je to užitočné, ak si nie ste istí hodnotou dĺžky zoznamu pochádzajúceho zo zdroja, povedzme z databázy.
Tu je príklad:
index = (len (jazyky)-1)
pre i v jazykoch:
tlač (Jazyky[index])
index -=1 #Znížte index o jeden pre každú iteráciu
Výkon:
Perl
C
PHP
Choď
Python
Ak sa však nepodarí odpočítať jeden od dĺžky zoznamu, spôsobí to chybu „index zoznamu mimo rozsahu“:
index = (len (jazyky)-1)
pre i v jazykoch:
tlač (Jazyky[index])
index -=1
Výkon:
IndexError: index zoznamu je mimo rozsahu
Vyššie uvedený kód vyvoláva chybu indexu, pretože dĺžka zoznamu je päť a snaží sa začať indexovať z piatich na nulu, zatiaľ čo najvyšší index je štyri. Znamená to teda, že zoznam nemá piaty index (šiestu položku).
Získajte zoznamy kreatívneho spracovania v Pythone
Chyby Pythonu sú pre človeka priateľské a zvyčajne čitateľné. Vždy ich to umožňuje v rozumnej miere sledovať.
Ako ste sa dozvedeli, odstránenie chyby zoznamu indexu mimo rozsah je celkom jednoduché. Ak sa vo svojich budúcich programoch stretnete s touto chybou, bez ohľadu na to, aký zložitý je zoznam, môžete problém vyriešiť pomocou konceptov vysvetlených v tomto príspevku.
Nebojte sa byť kreatívny so zložitými zoznamami. Môžete sa tiež naučiť, ako triediť zoznamy v Pythone vo svojom voľnom čase, aby ste to všetko lepšie pochopili.
Zoznamy s viacerými typmi údajov sa môžu rýchlo vymknúť z rúk. Tu je návod, ako ich triediť pomocou Pythonu.
Prečítajte si ďalej
- Programovanie
- Python
- Programovanie
- Tipy na kódovanie
Idowu je nadšený z akejkoľvek inteligentnej technológie a produktivity. Vo voľnom čase sa hrá s kódovaním a keď sa nudí, prepne na šachovnicu, no tiež sa rád raz za čas odpúta od rutiny. Jeho vášeň ukázať ľuďom cestu okolo moderných technológií ho motivuje k ďalšiemu písaniu.
prihlásiť sa ku odberu noviniek
Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné e-knihy a exkluzívne ponuky!
Kliknutím sem sa prihlásite na odber