Så du jobbet med en liste eller matrise i Python og prøvde sannsynligvis å dele den opp. Men i stedet for det forventede resultatet, får du en feilmelding som sier "listeindeks utenfor rekkevidde." Ingen grunn til bekymring, det kan skje hvem som helst.

La oss utforske hva denne feilen betyr, årsaken og hvordan du fjerner den uten videre.

Hva betyr "listeindeksen utenfor rekkevidde"-feilen i Python?

Når Python kaster en "listeindeks utenfor rekkevidde", betyr det at du prøvde å dele listen utover den siste indeksen.

Python identifiserer hvert element i en liste ved sin indeks. Og indeksen til en liste starter fra null. For eksempel, når du har en liste med fem elementer, er det første elementet på indeks null, mens det siste er på den fjerde indeksen.

For eksempel i en liste over fem programmeringsspråk:

Språk = ["Python", "Go", "PHP", "C", "Perl"]

Indekseringen for listen ovenfor er mellom null og fire. Så å prøve å kutte den for å skrive ut det femte elementet som vist nedenfor gir en feil:

print (språk[5])
Produksjon:
IndexError: listeindeks utenfor rekkevidde

I eksemplet ovenfor prøver Python å se etter den femte indeksen i listen, og når den ikke finner den, kaster den listeindeksfeilen. Det er fordi det første elementet (Python) er på indeks null, mens det siste (Perl) er på indeks fire.

Det er grunnlaget for feilen "listeindeks utenfor rekkevidde". Som sagt, Python kaster den hver gang du prøver å dele en liste utover den siste indeksen.

Hvordan fjerne "listeindeksen utenfor rekkevidde"-feilen i Python

Så hvordan kan du fjerne denne feilen? Det er lett.

Videre til forrige seksjon ovenfor, kan du skrive ut indeksene ved å bruke en tilløkke i en listeforståelse:

indekser = [languages.index (i) for i på språk]
skriv ut (indekser)
Produksjon:
[0, 1, 2, 3, 4]

Indeksen til en liste er grunnlaget for slicing i programmering. Så siden du kjenner den høyeste indeksen på listen for utgangen ovenfor (4), kan du tyde snittgrensen.

Derfor, for å dele opp listen og få det siste elementet:

print (språk[4])
Produksjon:
Perl

Den gir nå riktig resultat.

Hva om du vil gå gjennom listen ved å bruke indeksen?

Foruten det vanlige Python for loop, kan du også bruke indeksbegrepet til å iterere gjennom en liste. Selv om denne metoden kan se vanskelig ut, er den noen ganger uunngåelig. For eksempel er det nyttig hvis du vil sortere en liste i omvendt rekkefølge.

Denne metoden fungerer ved å sette en innledende indeks og øke eller redusere den med én til den siste tilgjengelige indeksen.

For å skrive ut varene med et økende indeksnummer (det første til det siste elementet), for eksempel:

indeks = 0 # Innledende indeks
for jeg på språk:
skriv ut (Språk[indeks])
indeks +=1
Produksjon:
Python

PHP
C
Perl

Men hva skjer hvis du setter startindeksen til én i stedet for null? Ta en titt:

indeks = 1 # Innledende indeks
for jeg på språk:
skriv ut (Språk[indeks])
indeks +=1
Produksjon:

PHP
C
Perl
IndexError: listeindeks utenfor rekkevidde

I eksemplet ovenfor starter indekseringen fra det andre elementet (indeks en, ). Så mens den øker, stopper ikke loopen før den fullfører tellingen for de fem elementene. Dette tvinger indeksen til å øke med én til siste post.

Derfor treffer skiven en femte indeks som ikke er tilgjengelig. Så det gir en indeksfeil. Det betyr at indeksen øker i følgende mønster for hver vare:

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

I stedet for riktig mønster, som er:

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

Som du kan se, er den høyeste verdien av indeksen ovenfor fire, noe som er riktig siden sløyfen begynner å øke indekseringen fra null.

Hvis du setter den første indeksen til null som du gjorde i det første eksemplet i denne delen, fjerner du feilen "listeindeks utenfor rekkevidde":

indeks = 0 # Innledende indeks
for jeg på språk:
skriv ut (Språk[indeks])
indeks +=1 #Øk indeksen med én for hver iterasjon

For å bruke dette konseptet for å skrive ut elementene i omvendt rekkefølge, må du trekke en fra matrisens lengde. Så dette tvinger indeksen til å starte fra fire og telle ned til den første indeksen, null.

Dette er nyttig hvis du ikke er sikker på lengden på listen som kommer fra en kilde, for eksempel en database.

Her er et eksempel:

indeks = (len (språk)-1)
for jeg på språk:
skriv ut (Språk[indeks])
indeks -=1 #Reduser indeksen med én for hver iterasjon
Produksjon:
Perl
C
PHP

Python

Men hvis du ikke trekker en fra lengden på listen, får du feilen "liste utenfor rekkeviddeindeksen":

indeks = (len (språk)-1)
for jeg på språk:
skriv ut (Språk[indeks])
indeks -=1
Produksjon:
IndexError: listeindeks utenfor rekkevidde

Koden ovenfor gir en indeksfeil fordi lengden på listen er fem, og den prøver å begynne å indeksere ned fra fem til null, mens den høyeste indeksen er fire. Så det betyr at listen ikke har en femte indeks (sjette element).

Få kreative håndteringslister i Python

Pythons feil er menneskevennlige og vanligvis lesbare. Dette gjør dem alltid sporbare i rimelig grad.

Som du har lært, er det ganske enkelt å fjerne listeindeksen utenfor rekkevidde. Hvis du møter denne feilen i dine fremtidige programmer, uavhengig av hvor kompleks listen er, kan du bruke konseptene som er forklart i dette innlegget for å løse problemet.

Vær gjerne kreativ med komplekse lister. Det kan også være lurt å lære hvordan du sorterer lister i Python på fritiden for å få et bedre grep om det hele.

Hvordan sortere nesten alle typer liste i Python

Lister med flere datatyper kan raskt komme ut av hånden. Her er hvordan du sorterer dem med Python.

Les Neste

DelekvitringE-post
Relaterte temaer
  • Programmering
  • Python
  • Programmering
  • Kodetips
Om forfatteren
Idowu Omisola (136 artikler publisert)

Idowu er lidenskapelig opptatt av alt smart teknologi og produktivitet. På fritiden leker han med koding og bytter til sjakkbrettet når han kjeder seg, men han elsker også å bryte ut av rutinene en gang i blant. Hans lidenskap for å vise folk veien rundt moderne teknologi motiverer ham til å skrive mer.

Mer fra Idowu Omisola

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!

Klikk her for å abonnere