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
instagram viewer

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.

Kako sortirati gotovo bilo koju vrstu popisa u Pythonu

Popisi s više vrsta podataka mogu brzo izmaknuti kontroli. Evo kako ih razvrstati pomoću Pythona.

Pročitajte dalje

UdioCvrkutE-mail
Povezane teme
  • Programiranje
  • Piton
  • Programiranje
  • Savjeti za kodiranje
O autoru
Idowu Omisola (Objavljeno 136 članaka)

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.

Više od Idowua Omisole

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