Torej ste delali s seznamom ali matriko v Pythonu in ste ga verjetno poskušali razrezati. Toda namesto pričakovanega rezultata dobite napako, ki pravi, "indeks seznama izven obsega." Brez skrbi, vsakomur se lahko zgodi.

Raziščimo, kaj pomeni ta napaka, njen vzrok in kako jo odstraniti brez odlašanja.

Kaj pomeni napaka "indeks seznama izven obsega" v Pythonu?

Ko Python vrže napako "indeks seznama izven obsega", to pomeni, da ste poskušali seznam razrezati nad zadnjim indeksom.

Python identificira vsak element na seznamu po njegovem indeksu. In indeks seznama se začne od nič. Na primer, ko imate seznam s petimi elementi, je njegov prvi element na indeksu nič, medtem ko je zadnji na četrtem indeksu.

Na primer na seznamu petih programskih jezikov:

Jeziki = ["Python", "Go", "PHP", "C", "Perl"]

Indeksiranje za zgornji seznam je med nič in štiri. Torej poskus razrezati za tiskanje petega elementa, kot je prikazano spodaj, povzroči napako:

tiskanje (jeziki[5])
Izhod:
IndexError: indeks seznama je izven obsega

V zgornjem primeru Python poskuša poiskati peti indeks na seznamu, in ko ga ne najde, vrže napako indeksa seznama. To je zato, ker je prvi element (Python) na indeksu nič, medtem ko je zadnji (Perl) na indeksu štiri.

To je osnova napake "indeks seznama izven obsega". Kot rečeno, ga Python vrže vsakič, ko poskušate razrezati seznam preko njegovega zadnjega indeksa.

Kako odstraniti napako "indeks seznama izven obsega" v Pythonu

Torej, kako lahko odstranite to napako? To je enostavno.

Poleg prejšnjega zgornjega razdelka lahko indekse natisnete s pomočjo a zazanka v razumevanju seznama:

indeksi = [jeziki.indeks (i) za i v jezikih]
natisni (indeks)
Izhod:
[0, 1, 2, 3, 4]

Indeks seznama je osnova za rezanje v programiranju. Ker torej poznate najvišji indeks seznama za zgornji izhod (4), lahko dešifrirate mejo rezine.

Torej, da razrežete seznam in dobite zadnji element:

tiskanje (jeziki[4])
Izhod:
Perl

Zdaj daje pravilen rezultat.

Kaj pa, če želite listati po seznamu z uporabo njegovega indeksa?

Poleg rednega Python za zanko, lahko uporabite tudi koncept indeksa za ponavljanje po seznamu. Čeprav je ta metoda morda videti naporna, je včasih neizogibna. Na primer, priročno je, če želite seznam razvrstiti v obratnem vrstnem redu.

Ta metoda deluje tako, da nastavite začetni indeks in ga povečate ali zmanjšate za eno do zadnjega razpoložljivega indeksa.

Če želite natisniti elemente z naraščajočo številko indeksa (od prvega do zadnjega elementa), na primer:

indeks = 0 # Začetni indeks
za i v jezikih:
natisni (Jeziki[kazalo])
indeks +=1
Izhod:
Python
Pojdi
PHP
C
Perl

Toda kaj se zgodi, če začetni indeks nastavite na eno namesto na nič? Poglej:

indeks = 1 # Začetni indeks
za i v jezikih:
natisni (Jeziki[kazalo])
indeks +=1
Izhod:
Pojdi
PHP
C
Perl
IndexError: indeks seznama je izven obsega

V zgornjem primeru se indeksiranje začne od drugega elementa (indeks ena, Pojdi). Torej se med povečevanjem zanka ne ustavi, dokler ne zaključi štetja za pet elementov. To prisili, da se indeks poveča za eno do zadnje postavke.

Tako rezina doseže peti indeks, ki ni na voljo. Torej vrže napako indeksa. To pomeni, da se indeks poveča po naslednjem vzorcu za vsak element:

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

Namesto pravilnega vzorca, ki je:

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

Kot lahko vidite, je najvišja vrednost zgornjega indeksa štiri, kar je pravilno, saj zanka začne povečevati indeksiranje od nič.

Zato, če nastavite začetni indeks na nič, kot ste storili v prvem primeru v tem razdelku, odstranite napako "indeks seznama izven obsega":

indeks = 0 # Začetni indeks
za i v jezikih:
natisni (Jeziki[kazalo])
indeks +=1 #Povečaj indeks za eno za vsako ponovitev

Če želite uporabiti ta koncept za izpis elementov v obratnem vrstnem redu, boste morali od dolžine matrike odšteti eno. Torej to prisili indeks, da se začne od štirih in odšteva do prvega indeksa, nič.

To je koristno, če niste prepričani o vrednosti dolžine seznama, ki prihaja iz vira, na primer baze podatkov.

Tukaj je primer:

indeks = (len (jeziki)-1)
za i v jezikih:
natisni (Jeziki[kazalo])
indeks -=1 #Zmanjšaj indeks za eno za vsako ponovitev
Izhod:
Perl
C
PHP
Pojdi
Python

Toda če od dolžine seznama ne odštejete enega, se pojavi napaka "seznam izven obsega indeksa":

indeks = (len (jeziki)-1)
za i v jezikih:
natisni (Jeziki[kazalo])
indeks -=1
Izhod:
IndexError: indeks seznama je izven obsega

Zgornja koda vrže indeksno napako, ker je dolžina seznama pet in poskuša začeti indeksirati navzdol s pet na nič, medtem ko je najvišji indeks štiri. Torej to pomeni, da seznam nima petega indeksa (šesti element).

Pridobite sezname ustvarjalnih rokov v Pythonu

Pythonove napake so človeku prijazne in običajno berljive. Zaradi tega so vedno sledljivi v razumni meri.

Kot ste se naučili, je odstranjevanje napake indeksa seznama izven obsega precej enostavno. Če se v prihodnjih programih srečujete s to napako, ne glede na to, kako zapleten je seznam, lahko za rešitev težave uporabite koncepte, razložene v tej objavi.

Bodite kreativni s kompleksnimi seznami. Morda bi se želeli naučiti tudi razvrščati sezname v Pythonu v prostem času, da se bolje naučite vsega.

Kako razvrstiti skoraj vse vrste seznamov v Pythonu

Seznami z več vrstami podatkov lahko hitro uidejo izpod nadzora. Tukaj je opisano, kako jih razvrstiti s Pythonom.

Preberite Naprej

DelitiTweetE-naslov
Povezane teme
  • Programiranje
  • Python
  • Programiranje
  • Nasveti za kodiranje
O avtorju
Idowu Omisola (Objavljenih 136 člankov)

Idowu je navdušen nad vsemi pametnimi tehnologijami in produktivnostjo. V prostem času se igra s kodiranjem in, ko mu je dolgčas, preklopi na šahovnico, rad pa se občasno odmakne od rutine. Njegova strast, da ljudem pokaže pot okoli sodobne tehnologije, ga motivira, da piše več.

Več od Idowu Omisola

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e-knjige in ekskluzivne ponudbe!

Kliknite tukaj, da se naročite