Så du arbetade med en lista eller array i Python och försökte förmodligen skära upp den. Men istället för det förväntade resultatet får du ett felmeddelande som säger "lista index utanför intervallet." Ingen fara, det kan hända vem som helst.

Låt oss utforska vad det här felet betyder, dess orsak och hur man tar bort det utan vidare.

Vad betyder felet "listindex utanför intervallet" i Python?

När Python kastar ett "listindex utanför intervallet"-felet betyder det att du försökte dela listan bortom dess senaste index.

Python identifierar varje objekt i en lista med dess index. Och indexet för en lista börjar från noll. Till exempel, när du har en lista med fem objekt, är dess första objekt på index noll, medan det sista är på det fjärde indexet.

Till exempel, i en lista med fem programmeringsspråk:

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

Indexeringen för listan ovan är mellan noll och fyra. Så att försöka skära den för att skriva ut den femte artikeln som visas nedan ger ett fel:

tryck (språk[5])
Produktion:
IndexError: lista index utanför intervallet
instagram viewer

I exemplet ovan försöker Python leta efter det femte indexet i listan, och när det inte kan hitta det, kastar det listindexfelet. Det beror på att det första elementet (Python) är på index noll, medan det sista (Perl) är på index fyra.

Det är grunden för felet "listindex utanför intervallet". Som sagt, Python kastar det när du försöker skära en lista bortom dess senaste index.

Hur man tar bort felet "listindex utanför intervallet" i Python

Så hur kan du ta bort det här felet? Det är lätt.

Vidare till föregående avsnitt ovan kan du skriva ut indexen med hjälp av en förslinga i en listaförståelse:

index = [languages.index (i) för i på språk]
skriva ut (index)
Produktion:
[0, 1, 2, 3, 4]

Indexet för en lista är grunden för slicing i programmering. Så eftersom du känner till det högsta indexet på listan för utdata ovan (4), kan du dechiffrera segmentgränsen.

Därför, för att dela listan och få det sista objektet:

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

Den ger nu rätt resultat.

Vad händer om du vill gå igenom listan med hjälp av dess index?

Förutom det vanliga Python för loop, kan du också använda indexkonceptet för att iterera genom en lista. Även om den här metoden kan se svår ut, är den ibland oundviklig. Det är till exempel praktiskt om du vill sortera en lista i omvänd ordning.

Denna metod fungerar genom att ställa in ett initialt index och öka eller minska det med ett till det sista tillgängliga indexet.

För att skriva ut objekten med ett ökande indexnummer (första till sista artikeln), till exempel:

index = 0 # Inledande index
för jag i språk:
print (Språk[index])
index +=1
Produktion:
Pytonorm

PHP
C
Perl

Men vad händer om du ställer in det initiala indexet till ett istället för noll? Ta en titt:

index = 1 # Inledande index
för jag i språk:
print (Språk[index])
index +=1
Produktion:

PHP
C
Perl
IndexError: lista index utanför intervallet

I exemplet ovan börjar indexeringen från den andra posten (index ett, ). Så medan den ökar, slutar slingan inte förrän den har slutfört räkningen för de fem objekten. Detta tvingar indexet att öka med ett till den sista posten.

Därför träffar segmentet ett femte index som inte är tillgängligt. Så det ger ett indexfel. Det betyder att indexet ökar i följande mönster för varje artikel:

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

Istället för det korrekta mönstret, vilket är:

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

Som du kan se är det högsta värdet på ovanstående index fyra, vilket är korrekt eftersom slingan börjar öka indexeringen från noll.

Att ställa in det initiala indexet till noll som du gjorde i det första exemplet i det här avsnittet tar därför bort felet "listindex utanför intervallet":

index = 0 # Inledande index
för jag i språk:
print (Språk[index])
index +=1 #Öka indexet med ett för varje iteration

För att tillämpa detta koncept för att mata ut objekten i omvänd ordning, måste du subtrahera en från arrayens längd. Så detta tvingar indexet att börja från fyra och räkna ner till det första indexet, noll.

Det här är användbart om du inte är säker på längden på listan som kommer från en källa, till exempel en databas.

Här är ett exempel:

index = (len (språk)-1)
för jag i språk:
print (Språk[index])
index -=1 #Minska indexet med ett för varje iteration
Produktion:
Perl
C
PHP

Pytonorm

Men att inte subtrahera en från listans längd får felet "list out of range index":

index = (len (språk)-1)
för jag i språk:
print (Språk[index])
index -=1
Produktion:
IndexError: lista index utanför intervallet

Ovanstående kod ger ett indexfel eftersom längden på listan är fem, och den försöker börja indexera ner från fem till noll, medan det högsta indexet är fyra. Så det betyder att listan inte har ett femte index (sjätte posten).

Skaffa kreativa hanteringslistor i Python

Pythons fel är människovänliga och vanligtvis läsbara. Detta gör dem alltid spårbara i rimlig omfattning.

Som du har lärt dig är det ganska enkelt att ta bort listindex utanför intervallet. Om du möter det här felet i dina framtida program, oavsett hur komplex listan är, kan du använda koncepten som förklaras i det här inlägget för att lösa problemet.

Var gärna kreativ med komplexa listor. Du kanske också vill lära dig hur du sorterar listor i Python på din fritid för att få bättre koll på det hela.

Hur man sorterar nästan alla typer av lista i Python

Listor med flera datatyper kan gå ur hand snabbt. Så här sorterar du dem med Python.

Läs Nästa

Dela med sigTweetE-post
Relaterade ämnen
  • Programmering
  • Pytonorm
  • Programmering
  • Kodningstips
Om författaren
Idowu Omisola (136 publicerade artiklar)

Idowu brinner för allt smart teknik och produktivitet. På fritiden leker han med kodning och byter till schackbrädet när han har tråkigt, men han älskar också att bryta sig loss från rutinen då och då. Hans passion för att visa människor vägen runt modern teknik motiverar honom att skriva mer.

Mer från Idowu Omisola

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!

Klicka här för att prenumerera