Dus je werkte met een lijst of array in Python en probeerde deze waarschijnlijk te slicen. Maar in plaats van het verwachte resultaat krijgt u een foutmelding met de tekst 'lijst index buiten bereik'. Geen zorgen, het kan iedereen overkomen.
Laten we eens kijken wat deze fout betekent, de oorzaak ervan en hoe u deze zonder verder oponthoud kunt verwijderen.
Wat betekent de fout "lijstindex buiten bereik" in Python?
Wanneer Python een "lijstindex buiten bereik"-fout genereert, betekent dit dat je hebt geprobeerd de lijst voorbij de laatste index te segmenteren.
Python identificeert elk item in een lijst door zijn index. En de index van een lijst begint bij nul. Als u bijvoorbeeld een lijst met vijf items hebt, staat het eerste item op index nul, terwijl het laatste op de vierde index staat.
Bijvoorbeeld in een lijst van vijf programmeertalen:
Talen = ["Python", "Go", "PHP", "C", "Perl"]
De indexering voor de bovenstaande lijst ligt tussen nul en vier. Dus als je het probeert te snijden om het vijfde item af te drukken, zoals hieronder wordt aangetoond, krijg je een foutmelding:
afdrukken (talen[5])
Uitgang::
IndexError: lijst index buiten bereik
In het bovenstaande voorbeeld probeert Python te zoeken naar de vijfde index in de lijst, en wanneer het deze niet kan vinden, genereert het de lijstindexfout. Dat komt omdat het eerste element (Python) op index nul staat, terwijl het laatste (Perl) op index vier staat.
Dat is de basis van de "lijstindex buiten bereik"-fout. Zoals gezegd, gooit Python het wanneer je een lijst probeert te segmenteren die verder gaat dan de laatste index.
Hoe de "lijstindex buiten bereik" -fout in Python te verwijderen
Dus hoe kunt u deze fout verwijderen? Het is makkelijk.
In aanvulling op het vorige gedeelte hierboven, kunt u de indexen afdrukken met a voorlus in een lijst begrip:
indexes = [talen.index (i) voor i in talen]
afdrukken (indexen)
Uitgang::
[0, 1, 2, 3, 4]
De index van een lijst is de basis van slicen in programmeren. Dus aangezien u de hoogste index van de lijst voor de bovenstaande uitvoer (4) kent, kunt u de slice-limiet ontcijferen.
Daarom, om de lijst te segmenteren en het laatste item te krijgen:
afdrukken (talen[4])
Uitgang::
Perl
Het geeft nu het juiste resultaat.
Wat als u door de lijst wilt bladeren met behulp van de index?
Naast de reguliere Python voor lus, kunt u het indexconcept ook gebruiken om door een lijst te bladeren. Hoewel deze methode er misschien moeilijk uitziet, is het soms onvermijdelijk. Het is bijvoorbeeld handig als u een lijst in omgekeerde volgorde wilt sorteren.
Deze methode werkt door een initiële index in te stellen en deze met één te verhogen of te verlagen tot de laatst beschikbare index.
Om de items af te drukken met een oplopend indexnummer (van het eerste naar het laatste item), bijvoorbeeld:
index = 0 # Initiële index
voor i in Talen:
afdrukken (Talen[index])
index +=1
Uitgang::
Python
Gaan
PHP
C
Perl
Maar wat gebeurt er als u de initiële index instelt op één in plaats van nul? Even kijken:
index = 1 # Initiële index
voor i in Talen:
afdrukken (Talen[index])
index +=1
Uitgang::
Gaan
PHP
C
Perl
IndexError: lijst index buiten bereik
In het bovenstaande voorbeeld begint de indexering vanaf het tweede item (index één, Gaan). Dus tijdens het ophogen stopt de lus niet totdat de telling voor de vijf items is voltooid. Dit dwingt de index met één te verhogen tot het laatste item.
Vandaar dat het segment een vijfde index bereikt die niet beschikbaar is. Dus het gooit een indexfout. Dit betekent dat de index voor elk item in het volgende patroon toeneemt:
1=1, 1+1=2, 1+2=3, 1+3=4, 1+4=5
In plaats van het juiste patroon, namelijk:
0=0, 0+1=1, 1+1=2, 1+2=3, 1+3=4
Zoals u kunt zien, is de hoogste waarde van de bovenstaande index vier, wat correct is omdat de lus de indexering vanaf nul begint te verhogen.
Als u daarom de initiële index op nul instelt, zoals u deed in het eerste voorbeeld in deze sectie, wordt de fout "lijst index buiten bereik" verwijderd:
index = 0 # Initiële index
voor i in Talen:
afdrukken (Talen[index])
index +=1 #Verhoog de index met één voor elke iteratie
Om dit concept toe te passen voor het uitvoeren van de items in omgekeerde volgorde, moet u één aftrekken van de lengte van de array. Dit dwingt de index dus om vanaf vier te beginnen en af te tellen tot de eerste index, nul.
Dit is handig als u niet zeker bent over de lengtewaarde van de lijst die afkomstig is van een bron, bijvoorbeeld een database.
Hier is een voorbeeld:
index = (len (talen)-1)
voor i in Talen:
afdrukken (Talen[index])
index -=1 #Verlaag de index met één voor elke iteratie
Uitgang::
Perl
C
PHP
Gaan
Python
Maar als u er niet één van de lengte van de lijst aftrekt, wordt de fout "lijst buiten bereik index" weergegeven:
index = (len (talen)-1)
voor i in Talen:
afdrukken (Talen[index])
index -=1
Uitgang::
IndexError: lijst index buiten bereik
De bovenstaande code genereert een indexfout omdat de lengte van de lijst vijf is en hij probeert te indexeren van vijf naar nul, terwijl de hoogste index vier is. Het betekent dus dat de lijst geen vijfde index heeft (zesde item).
Krijg creatieve verwerkingslijsten in Python
De fouten van Python zijn mensvriendelijk en doorgaans leesbaar. Dit maakt ze steevast tot een redelijke mate traceerbaar.
Zoals je hebt geleerd, is het vrij eenvoudig om de lijstindex buiten bereik te verwijderen. Als u deze fout in uw toekomstige programma's tegenkomt, ongeacht hoe complex de lijst is, kunt u de concepten toepassen die in dit bericht worden uitgelegd om het probleem op te lossen.
Voel je vrij om creatief te zijn met complexe lijsten. Misschien wil je ook leren hoe je lijsten in Python in je vrije tijd kunt sorteren om alles beter onder de knie te krijgen.
Lijsten met meerdere datatypes kunnen snel uit de hand lopen. Hier leest u hoe u ze kunt sorteren met Python.
Lees volgende
- Programmeren
- Python
- Programmeren
- Codeertips
Idowu is gepassioneerd door alles wat slimme technologie en productiviteit betreft. In zijn vrije tijd speelt hij met coderen en schakelt hij over naar het schaakbord als hij zich verveelt, maar hij vindt het ook heerlijk om af en toe uit de routine te stappen. Zijn passie om mensen de weg te wijzen in moderne technologie motiveert hem om meer te schrijven.
Abonneer op onze nieuwsbrief
Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!
Klik hier om je te abonneren