Nii et töötasite Pythonis loendi või massiiviga ja ilmselt proovisite seda viilutada. Kuid oodatud tulemuse asemel kuvatakse tõrketeade, mis ütleb "loendi indeks väljaspool vahemikku". Ärge muretsege, see võib juhtuda igaühega.
Uurime, mida see viga tähendab, selle põhjust ja kuidas seda ilma pikema jututa eemaldada.
Mida tähendab Pythonis tõrge "loendiindeks vahemikust väljas"?
Kui Python annab veateate "loendiindeks vahemikust väljas", tähendab see, et proovisite loendit viilutada viimasest indeksist kaugemale.
Python tuvastab iga loendi üksuse selle indeksi järgi. Ja loendi indeks algab nullist. Näiteks kui teil on viie üksusega loend, on selle esimene üksus nullindeksis, viimane aga neljandas registris.
Näiteks viie programmeerimiskeele loendis:
Keeled = ["Python", "Go", "PHP", "C", "Perl"]
Ülaltoodud loendi indekseerimine on nulli ja nelja vahel. Nii et kui proovite seda viienda üksuse printimiseks viiludeks lõigata, nagu allpool näidatud, tekib tõrge:
trükk (keeled[5])
Väljund:
IndexError: loendi indeks on vahemikust väljas
Ülaltoodud näites proovib Python otsida loendist viiendat indeksit ja kui ta seda ei leia, viskab loendiindeksi vea. Selle põhjuseks on asjaolu, et esimene element (Python) on indeksil null, viimane (Perl) aga indeksil neli.
See on vea "loendiindeks vahemikust väljas" aluseks. Nagu öeldud, viskab Python selle välja alati, kui proovite loendit viimasest indeksist kaugemale viilutada.
Kuidas eemaldada Pythonis tõrge "loendiindeks väljaspool ulatust".
Niisiis, kuidas saate selle vea eemaldada? See on lihtne.
Lisaks eelnevale jaotisele saate indeksid printida, kasutades a jaokssilmus loendist arusaamises:
indeksid = [languages.index (i) i jaoks keeltes]
print (indeksid)
Väljund:
[0, 1, 2, 3, 4]
Loendi indeks on programmeerimisel viilutamise aluseks. Seega, kuna teate ülaloleva väljundi loendi kõrgeimat indeksit (4), saate lõigupiirangu dešifreerida.
Seega loendi tükeldamiseks ja viimase üksuse hankimiseks:
trükk (keeled[4])
Väljund:
Perl
Nüüd väljastab see õige tulemuse.
Mida teha, kui soovite loendit selle indeksi abil läbi vaadata?
Lisaks tavalisele Python tsükli jaoks, saate loendi itereerimiseks kasutada ka indeksi kontseptsiooni. Kuigi see meetod võib tunduda vaevaline, on see mõnikord vältimatu. Näiteks on see kasulik, kui soovite sortida loendit vastupidises järjekorras.
See meetod töötab, määrates esialgse indeksi ja suurendades või vähendades seda ühe võrra kuni viimase saadaoleva indeksini.
Kasvava indeksinumbriga üksuste printimiseks (esimesest viimaseni), näiteks:
indeks = 0 # Esialgne indeks
minu jaoks keeltes:
print (keeled[indeks])
indeks +=1
Väljund:
Python
Mine
PHP
C
Perl
Aga mis juhtub, kui seate algindeksiks nulli asemel ühe? Vaata:
indeks = 1 # Esialgne indeks
minu jaoks keeltes:
print (keeled[indeks])
indeks +=1
Väljund:
Mine
PHP
C
Perl
IndexError: loendi indeks on vahemikust väljas
Ülaltoodud näites algab indekseerimine teisest üksusest (indeks üks, Mine). Seega ei peatu tsükkel suurendamise ajal enne, kui viie üksuse loendamine on lõppenud. See sunnib indeksit kuni viimase üksuseni ühe võrra suurendama.
Seega saavutab viil viienda indeksi, mis pole saadaval. Nii et see annab indeksi vea. See tähendab, et indeks suureneb iga üksuse puhul järgmise mustriga:
1=1, 1+1=2, 1+2=3, 1+3=4, 1+4=5
Õige mustri asemel, mis on:
0=0, 0+1=1, 1+1=2, 1+2=3, 1+3=4
Nagu näete, on ülaltoodud indeksi suurim väärtus neli, mis on õige, kuna tsükkel hakkab indekseerimist suurendama nullist.
Seetõttu eemaldab algindeksi nulli määramine, nagu tegite selle jaotise esimeses näites, vea "loendiindeks vahemikust väljas".
indeks = 0 # Esialgne indeks
minu jaoks keeltes:
print (keeled[indeks])
indeks +=1 #Suurendage iga iteratsiooni indeksit ühe võrra
Selle kontseptsiooni rakendamiseks üksuste vastupidises järjekorras väljastamiseks peate massiivi pikkusest ühe lahutama. Nii et see sunnib indeksit alustama neljast ja lugema alla esimese indeksi, nullini.
See on kasulik, kui te pole kindel allikast, näiteks andmebaasist, pärineva loendi pikkuse väärtuses.
Siin on näide:
indeks = (len (keeled)-1)
minu jaoks keeltes:
print (keeled[indeks])
indeks -=1 #Vähenda indeksit ühe võrra iga iteratsiooni jaoks
Väljund:
Perl
C
PHP
Mine
Python
Kui aga loendi pikkusest ühte ei lahutata, kuvatakse tõrketeade "loend väljaspool vahemikku indeksit".
indeks = (len (keeled)-1)
minu jaoks keeltes:
print (keeled[indeks])
indeks -=1
Väljund:
IndexError: loendi indeks on vahemikust väljas
Ülaltoodud kood annab indeksi vea, kuna loendi pikkus on viis ja see proovib alustada indekseerimist viielt nullini, samas kui kõrgeim indeks on neli. See tähendab, et loendil ei ole viiendat indeksit (kuues üksus).
Hankige Pythonis loomingulisi käsitlemisloendeid
Pythoni vead on inimsõbralikud ja tavaliselt loetavad. See muudab need alati mõistlikul määral jälgitavaks.
Nagu olete õppinud, on loendi indeksi vahemikust väljas vea eemaldamine üsna lihtne. Kui näete seda viga oma tulevastes programmides, saate probleemi lahendamiseks rakendada selles postituses kirjeldatud kontseptsioone, olenemata loendi keerukusest.
Olge keerukate loendite abil loominguline. Samuti võiksite õppida, kuidas vabal ajal Pythonis loendeid sorteerida, et sellest kõigest paremini aru saada.
Mitme andmetüübiga loendid võivad kiiresti käest ära minna. Siit saate teada, kuidas neid Pythoni abil sortida.
Loe edasi
- Programmeerimine
- Python
- Programmeerimine
- Kodeerimise näpunäited
Idowu on kirglik kõige nutika tehnoloogia ja tootlikkuse vastu. Vabal ajal mängib ta ringi kodeerimisega ja lülitub igavlemisel malelauale, kuid armastab ka aeg-ajalt rutiinist lahti murda. Tema kirg näidata inimestele teed kaasaegses tehnikas motiveerib teda rohkem kirjutama.
Liituge meie uudiskirjaga
Liituge meie uudiskirjaga tehniliste näpunäidete, arvustuste, tasuta e-raamatute ja eksklusiivsete pakkumiste saamiseks!
Tellimiseks klõpsake siin