Więc pracowałeś z listą lub tablicą w Pythonie i prawdopodobnie próbowałeś to pokroić. Ale zamiast oczekiwanego wyniku pojawia się błąd „lista indeksu poza zakresem”. Bez obaw, może się to przydarzyć każdemu.

Przyjrzyjmy się, co oznacza ten błąd, jego przyczynę i jak go usunąć bez dalszych ceregieli.

Co oznacza błąd „lista indeksu poza zakresem” w Pythonie?

Gdy Python zgłasza błąd „indeks listy poza zakresem”, oznacza to, że próbowałeś podzielić listę poza jej ostatni indeks.

Python identyfikuje każdy element na liście za pomocą jego indeksu. A indeks listy zaczyna się od zera. Na przykład, jeśli masz listę z pięcioma pozycjami, jej pierwsza pozycja znajduje się w indeksie zero, a ostatnia w indeksie czwartym.

Na przykład na liście pięciu języków programowania:

Języki = ["Python", "Go", "PHP", "C", "Perl"]

Indeksowanie powyższej listy wynosi od zera do czterech. Więc próba pocięcia go, aby wydrukować piąty element, jak pokazano poniżej, daje błąd:

druk (języki[5])
Wyjście:
IndexError: lista indeksu poza zakresem
instagram viewer

W powyższym przykładzie Python próbuje wyszukać piąty indeks na liście, a gdy go nie może znaleźć, zgłasza błąd indeksu listy. Dzieje się tak, ponieważ pierwszy element (Python) znajduje się w indeksie zero, a ostatni (Perl) jest w indeksie czwartym.

To jest podstawa błędu „lista indeksu poza zakresem”. Jak już powiedziano, Python wyrzuca go za każdym razem, gdy próbujesz wyciąć listę poza jej ostatni indeks.

Jak usunąć błąd „lista indeksu poza zakresem” w Pythonie?

Jak więc usunąć ten błąd? To jest łatwe.

W nawiązaniu do poprzedniej sekcji powyżej, możesz wydrukować indeksy za pomocą dlapętla w zrozumieniu listy:

indexes = [languages.index (i) for i w językach]
druk (indeksy)
Wyjście:
[0, 1, 2, 3, 4]

Indeks listy jest podstawą krojenia w programowaniu. Więc skoro znasz najwyższy indeks listy dla wyjścia powyżej (4), możesz rozszyfrować limit plastra.

Stąd, aby pokroić listę i uzyskać ostatni element:

druk (języki[4])
Wyjście:
Perl

Teraz wyświetla poprawny wynik.

Co zrobić, jeśli chcesz przeglądać listę za pomocą jej indeksu?

Poza zwykłym Python dla pętli, można również użyć koncepcji indeksu do iteracji po liście. Chociaż ta metoda może wyglądać na uciążliwą, czasami jest nieunikniona. Na przykład przydaje się, jeśli chcesz posortować listę w odwrotnej kolejności.

Ta metoda działa przez ustawienie początkowego indeksu i zwiększenie lub zmniejszenie go o jeden do ostatniego dostępnego indeksu.

Aby wydrukować pozycje z rosnącym numerem indeksu (od pierwszej do ostatniej pozycji), na przykład:

indeks = 0 # Indeks początkowy
dla mnie w językach:
drukuj (Języki[indeks])
indeks +=1
Wyjście:
Pyton
Udać się
PHP
C
Perl

Ale co się stanie, jeśli ustawisz początkowy indeks na jeden zamiast na zero? Spójrz:

indeks = 1 # Indeks początkowy
dla mnie w językach:
drukuj (Języki[indeks])
indeks +=1
Wyjście:
Udać się
PHP
C
Perl
IndexError: lista indeksu poza zakresem

W powyższym przykładzie indeksowanie rozpoczyna się od drugiej pozycji (indeks pierwszy, Udać się). Tak więc podczas inkrementacji pętla nie zatrzymuje się, dopóki nie zakończy zliczania pięciu elementów. Wymusza to wzrost indeksu o jeden aż do ostatniej pozycji.

W związku z tym wycinek trafia na piąty indeks, który nie jest dostępny. Więc zgłasza błąd indeksu. Oznacza to, że indeks rośnie według następującego wzoru dla każdej pozycji:

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

Zamiast prawidłowego wzoru, czyli:

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

Jak widać, najwyższa wartość powyższego indeksu to cztery, co jest poprawne, ponieważ pętla zaczyna inkrementować indeksowanie od zera.

Dlatego ustawienie początkowego indeksu na zero, tak jak w pierwszym przykładzie w tej sekcji, usuwa błąd „lista indeksu poza zakresem”:

indeks = 0 # Indeks początkowy
dla mnie w językach:
drukuj (Języki[indeks])
indeks +=1 #Zwiększ indeks o jeden dla każdej iteracji

Aby zastosować tę koncepcję do wyprowadzania elementów w odwrotnej kolejności, musisz odjąć jeden od długości tablicy. To zmusza indeks do rozpoczęcia od czterech i odliczania do pierwszego indeksu, zero.

Jest to przydatne, jeśli nie masz pewności co do wartości długości listy pochodzącej ze źródła, na przykład bazy danych.

Oto przykład:

indeks = (len (języki)-1)
dla mnie w językach:
drukuj (Języki[indeks])
indeks -=1 #Zmniejsz indeks o jeden dla każdej iteracji
Wyjście:
Perl
C
PHP
Udać się
Pyton

Ale nie odjęcie jednego od długości listy powoduje błąd „lista poza indeksem zakresu”:

indeks = (len (języki)-1)
dla mnie w językach:
drukuj (Języki[indeks])
indeks -=1
Wyjście:
IndexError: lista indeksu poza zakresem

Powyższy kod zgłasza błąd indeksu, ponieważ długość listy wynosi pięć i próbuje rozpocząć indeksowanie od pięciu do zera, podczas gdy najwyższy indeks to cztery. Oznacza to, że lista nie ma piątego indeksu (szóstego elementu).

Uzyskaj kreatywne listy obsługi w Pythonie

Błędy Pythona są przyjazne dla człowieka i zazwyczaj czytelne. Niezmiennie sprawia to, że są one w rozsądnym zakresie identyfikowalne.

Jak już wiesz, usunięcie błędu indeksu listy poza zakresem jest dość łatwe. Jeśli napotkasz ten błąd w swoich przyszłych programach, niezależnie od tego, jak złożona jest lista, możesz zastosować koncepcje wyjaśnione w tym poście, aby rozwiązać problem.

Zachęcamy do kreatywności dzięki złożonym listom. Możesz także chcieć nauczyć się sortować listy w Pythonie w wolnym czasie, aby lepiej to wszystko zrozumieć.

Jak posortować prawie każdy rodzaj listy w Pythonie?

Listy z wieloma typami danych mogą szybko wymknąć się spod kontroli. Oto jak je posortować za pomocą Pythona.

Czytaj dalej

DzielićĆwierkaćE-mail
Powiązane tematy
  • Programowanie
  • Pyton
  • Programowanie
  • Wskazówki dotyczące kodowania
O autorze
Idowu Omisola (136 opublikowanych artykułów)

Idowu pasjonuje się każdą inteligentną technologią i produktywnością. W wolnych chwilach bawi się kodowaniem, a gdy się nudzi, przechodzi na szachownicę, ale od czasu do czasu uwielbia też oderwać się od rutyny. Jego pasja do pokazywania ludziom drogi do nowoczesnych technologii motywuje go do pisania więcej.

Więcej od Idowu Omisola

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować