Dakle, radili ste s popisom ili nizom u Pythonu i vjerojatno ste ga pokušali izrezati. Ali umjesto očekivanog rezultata, dobivate pogrešku koja kaže, "indeks popisa izvan raspona". Bez brige, svakome se može dogoditi.
Istražimo što ova pogreška znači, njezin uzrok i kako je ukloniti bez daljnjeg.
Što znači pogreška "indeks popisa izvan raspona" u Pythonu?
Kada Python izbaci pogrešku "indeks popisa izvan raspona", to znači da ste pokušali izrezati popis izvan njegovog posljednjeg indeksa.
Python identificira svaku stavku na popisu njezinim indeksom. A indeks popisa počinje od nule. Na primjer, kada imate popis s pet stavki, njegova prva stavka je na indeksu nula, dok je posljednja na četvrtom indeksu.
Na primjer, na popisu od pet programskih jezika:
Jezici = ["Python", "Go", "PHP", "C", "Perl"]
Indeksiranje za gornji popis je između nula i četiri. Dakle, pokušaj da ga isječete da ispišete petu stavku kao što je prikazano u nastavku daje pogrešku:
ispis (jezici[5])
Izlaz:
IndexError: indeks popisa izvan raspona
U gornjem primjeru, Python pokušava potražiti peti indeks na popisu, a kada ga ne može pronaći, izbacuje grešku indeksa popisa. To je zato što je prvi element (Python) na indeksu nula, dok je posljednji (Perl) na indeksu četiri.
To je osnova pogreške "indeks popisa izvan raspona". Kao što je rečeno, Python ga baca kad god pokušate izrezati popis izvan njegovog posljednjeg indeksa.
Kako ukloniti pogrešku "indeks popisa izvan raspona" u Pythonu
Dakle, kako možete ukloniti ovu pogrešku? To je lako.
Uz prethodni odjeljak iznad, možete ispisati indekse pomoću a zapetlja u razumijevanju popisa:
indeksi = [jezici.indeks (i) za i u jezicima]
ispis (indeksi)
Izlaz:
[0, 1, 2, 3, 4]
Indeks popisa temelj je rezanja u programiranju. Dakle, budući da znate najviši indeks popisa za izlaz iznad (4), možete dešifrirati ograničenje isječaka.
Dakle, da biste isjekli popis i dobili posljednju stavku:
ispis (jezici[4])
Izlaz:
Perl
Sada daje ispravan rezultat.
Što ako želite petljati kroz popis koristeći njegov indeks?
Osim redovnog Python za petlju, također možete koristiti koncept indeksa za ponavljanje kroz popis. Iako ova metoda može izgledati naporna, ponekad je neizbježna. Na primjer, dobro je ako želite sortirati popis obrnutim redoslijedom.
Ova metoda funkcionira tako da postavlja početni indeks i povećava ga ili smanjuje za jedan do posljednjeg dostupnog indeksa.
Za ispis stavki s rastućim indeksnim brojem (od prve do zadnje stavke), na primjer:
indeks = 0 # Početni indeks
za mene na jezicima:
ispis (jezici[indeks])
indeks +=1
Izlaz:
Piton
Ići
PHP
C
Perl
Ali što se događa ako početni indeks postavite na jedan umjesto na nulu? Pogledaj:
indeks = 1 # Početni indeks
za mene na jezicima:
ispis (jezici[indeks])
indeks +=1
Izlaz:
Ići
PHP
C
Perl
IndexError: indeks popisa izvan raspona
U gornjem primjeru, indeksiranje počinje od druge stavke (indeks jedan, Ići). Dakle, dok se povećava, petlja se ne zaustavlja sve dok ne završi brojanje za pet stavki. Time se indeks povećava za jedan do posljednje stavke.
Dakle, isječak pogađa peti indeks koji nije dostupan. Dakle, izbacuje grešku indeksa. To znači da se indeks povećava u sljedećem obrascu za svaku stavku:
1=1, 1+1=2, 1+2=3, 1+3=4, 1+4=5
Umjesto ispravnog uzorka, a to je:
0=0, 0+1=1, 1+1=2, 1+2=3, 1+3=4
Kao što možete vidjeti, najviša vrijednost gornjeg indeksa je četiri, što je točno jer petlja počinje povećavati indeksiranje od nule.
Stoga, postavljanje početnog indeksa na nulu kao što ste učinili u prvom primjeru u ovom odjeljku uklanja pogrešku "indeks popisa izvan raspona":
indeks = 0 # Početni indeks
za mene na jezicima:
ispis (jezici[indeks])
indeks +=1 #Povećajte indeks za jedan za svaku iteraciju
Da biste primijenili ovaj koncept za ispis stavki obrnutim redoslijedom, morat ćete oduzeti jedan od duljine niza. Dakle, to prisiljava indeks da počne od četiri i odbrojava do prvog indeksa, nule.
Ovo je korisno ako niste sigurni u vrijednost duljine popisa koji dolazi iz izvora, recimo, baze podataka.
Evo primjera:
indeks = (len (jezici)-1)
za mene na jezicima:
ispis (jezici[indeks])
indeks -=1 #Smanji indeks za jedan za svaku iteraciju
Izlaz:
Perl
C
PHP
Ići
Piton
Ali ako ne oduzmete jedan od duljine popisa, pojavljuje se pogreška "popis izvan raspona indeksa":
indeks = (len (jezici)-1)
za mene na jezicima:
ispis (jezici[indeks])
indeks -=1
Izlaz:
IndexError: indeks popisa izvan raspona
Gornji kod izbacuje indeksnu pogrešku jer je duljina liste pet, i pokušava započeti indeksiranje s pet na nulu, dok je najviši indeks četiri. Dakle, to znači da popis nema peti indeks (šesta stavka).
Nabavite kreativne liste za rukovanje u Pythonu
Pythonove pogreške su prilagođene ljudima i obično čitljive. To ih uvijek čini sljedivima u razumnoj mjeri.
Kao što ste naučili, uklanjanje pogreške indeksa popisa izvan raspona prilično je jednostavno. Ako se suočite s ovom pogreškom u svojim budućim programima, bez obzira na to koliko je popis složen, možete primijeniti koncepte objašnjene u ovom postu kako biste riješili problem.
Slobodno budite kreativni sa složenim popisima. Možda biste također htjeli naučiti kako sortirati popise u Pythonu u svoje slobodno vrijeme da biste se bolje upoznali sa svime.
Popisi s više vrsta podataka mogu brzo izmaknuti kontroli. Evo kako ih razvrstati pomoću Pythona.
Pročitajte dalje
- Programiranje
- Piton
- Programiranje
- Savjeti za kodiranje

Idowu je strastven za sve pametne tehnologije i produktivnost. U slobodno vrijeme igra se s kodiranjem i prelazi na šahovsku ploču kad mu je dosadno, ali voli se s vremena na vrijeme otrgnuti od rutine. Njegova strast da ljudima pokaže put oko moderne tehnologije motivira ga da više piše.
Pretplatite se na naše obavijesti
Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!
Kliknite ovdje za pretplatu