Deci lucrați cu o listă sau o matrice în Python și probabil ați încercat să o tăiați. Dar, în loc de rezultatul așteptat, obțineți o eroare care spune „lista indexului în afara intervalului”. Fără griji, se poate întâmpla oricui.
Să explorăm ce înseamnă această eroare, cauza ei și cum să o eliminăm fără nicio altă problemă.
Ce înseamnă eroarea „index de listă în afara intervalului” în Python?
Când Python aruncă o eroare „index de listă în afara intervalului”, înseamnă că ați încercat să tăiați lista dincolo de ultimul index.
Python identifică fiecare element dintr-o listă după indexul său. Iar indexul unei liste începe de la zero. De exemplu, atunci când aveți o listă cu cinci articole, primul ei articol se află pe indexul zero, în timp ce ultimul este pe al patrulea index.
De exemplu, într-o listă de cinci limbaje de programare:
Limbi = ["Python", "Go", "PHP", "C", "Perl"]
Indexarea pentru lista de mai sus este între zero și patru. Deci, încercarea de a-l tăia pentru a imprima al cincilea articol, așa cum este demonstrat mai jos, dă o eroare:
tipărire (limbi[5])
Ieșire:
IndexError: listează indexul în afara intervalului
În exemplul de mai sus, Python încearcă să caute al cincilea index din listă, iar când nu îl poate găsi, aruncă eroarea de index al listei. Asta pentru că primul element (Python) este pe indexul zero, în timp ce ultimul (Perl) este pe indexul patru.
Aceasta este baza erorii „indexul listei în afara intervalului”. După cum s-a spus, Python îl aruncă ori de câte ori încercați să tăiați o listă dincolo de ultimul său index.
Cum să eliminați eroarea „index de listă în afara intervalului” în Python
Deci, cum puteți elimina această eroare? Este ușor.
În continuare la secțiunea anterioară de mai sus, puteți tipări indecșii folosind a pentrubuclă într-o listă de înțelegere:
indexes = [languages.index (i) pentru i în limbi]
imprimare (indexuri)
Ieșire:
[0, 1, 2, 3, 4]
Indexul unei liste stă la baza tăierii în programare. Deci, deoarece cunoașteți cel mai înalt indice al listei pentru rezultatul de mai sus (4), puteți descifra limita de felie.
Prin urmare, pentru a tăia lista și a obține ultimul articol:
tipărire (limbi[4])
Ieșire:
Perl
Acum scoate rezultatul corect.
Ce se întâmplă dacă doriți să parcurgeți lista folosind indexul acesteia?
Pe lângă cele obișnuite Python pentru buclă, puteți folosi și conceptul de index pentru a itera printr-o listă. Deși această metodă poate părea dificilă, uneori este inevitabil. De exemplu, este util dacă doriți să sortați o listă în ordine inversă.
Această metodă funcționează prin setarea unui index inițial și creșterea sau decrementarea acestuia cu unul până la ultimul index disponibil.
Pentru a tipări articolele cu un număr de index crescător (de la primul până la ultimul articol), de exemplu:
indice = 0 # Index inițial
pentru i în limbi:
imprimare (Limbi[index])
indice +=1
Ieșire:
Piton
Merge
PHP
C
Perl
Dar ce se întâmplă dacă setați indexul inițial la unu în loc de zero? Uită-te:
indice = 1 # Index inițial
pentru i în limbi:
imprimare (Limbi[index])
indice +=1
Ieșire:
Merge
PHP
C
Perl
IndexError: listează indexul în afara intervalului
În exemplul de mai sus, indexarea începe de la al doilea element (index unu, Merge). Deci, în timp ce se incrementează, bucla nu se oprește până când nu termină numărarea celor cinci elemente. Acest lucru forțează indicele să crească cu unu până la ultimul element.
Prin urmare, felia atinge un al cincilea index care nu este disponibil. Deci, aruncă o eroare de index. Înseamnă că indicele crește în următorul model pentru fiecare articol:
1=1, 1+1=2, 1+2=3, 1+3=4, 1+4=5
În loc de modelul corect, care este:
0=0, 0+1=1, 1+1=2, 1+2=3, 1+3=4
După cum puteți vedea, cea mai mare valoare a indexului de mai sus este patru, ceea ce este corect, deoarece bucla începe să crească indexarea de la zero.
Prin urmare, setarea indexului inițial la zero, așa cum ați făcut în primul exemplu din această secțiune, elimină eroarea „index de listă în afara intervalului”:
indice = 0 # Index inițial
pentru i în limbi:
imprimare (Limbi[index])
indice +=1 #Măriți indicele cu unul pentru fiecare iterație
Pentru a aplica acest concept pentru ieșirea elementelor în ordine inversă, va trebui să scădeți unul din lungimea matricei. Deci, acest lucru forțează indicele să înceapă de la patru și să numere înapoi până la primul indice, zero.
Acest lucru este util dacă nu sunteți sigur de valoarea lungimii listei care provine dintr-o sursă, de exemplu, o bază de date.
Iată un exemplu:
index = (len (Limbi)-1)
pentru i în limbi:
imprimare (Limbi[index])
indice -=1 #Reduceți indicele cu unul pentru fiecare iterație
Ieșire:
Perl
C
PHP
Merge
Piton
Dar eșecul de a scădea unul din lungimea listei aruncă eroarea „indexului în afara intervalului”:
index = (len (Limbi)-1)
pentru i în limbi:
imprimare (Limbi[index])
indice -=1
Ieșire:
IndexError: listează indexul în afara intervalului
Codul de mai sus aruncă o eroare de index, deoarece lungimea listei este de cinci și încearcă să înceapă indexarea de la cinci la zero, în timp ce cel mai mare indice este de patru. Deci înseamnă că lista nu are un al cincilea index (al șaselea element).
Obțineți liste de manipulare creativă în Python
Erorile lui Python sunt prietenoase pentru oameni și de obicei lizibile. În mod invariabil, acest lucru le face urmăribile într-o măsură rezonabilă.
După cum ați învățat, eliminarea erorii indexului listei în afara intervalului este destul de ușoară. Dacă te confrunți cu această eroare în programele tale viitoare, indiferent de cât de complexă este lista, poți aplica conceptele explicate în această postare pentru a rezolva problema.
Simțiți-vă liber să fiți creativ cu liste complexe. De asemenea, poate doriți să învățați cum să sortați liste în Python în timpul liber, pentru a înțelege mai bine totul.
Listele cu mai multe tipuri de date pot scăpa rapid de sub control. Iată cum să le sortați cu Python.
Citiți în continuare
- Programare
- Piton
- Programare
- Sfaturi de codare

Idowu este pasionat de orice tehnologie inteligentă și productivitate. În timpul liber, se joacă cu codificarea și trece la tabla de șah când se plictisește, dar îi place și să se desprindă de rutină din când în când. Pasiunea lui pentru a le arăta oamenilor calea în jurul tehnologiei moderne îl motivează să scrie mai mult.
Aboneaza-te la newsletter-ul nostru
Alăturați-vă buletinului nostru informativ pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!
Click aici pentru a te abona