Значи сте работили със списък или масив в Python и вероятно сте се опитали да го нарежете. Но вместо очаквания резултат получавате грешка, която гласи „индексът на списъка е извън обхвата“. Не се притеснявайте, може да се случи на всеки.
Нека да проучим какво означава тази грешка, причината за нея и как да я премахнем без повече приказки.
Какво означава грешката „индекс на списък извън обхвата“ в Python?
Когато Python изведе грешка „индекс на списък извън обхвата“, това означава, че сте се опитали да разрежете списъка извън последния му индекс.
Python идентифицира всеки елемент в списък чрез неговия индекс. И индексът на списък започва от нула. Например, когато имате списък с пет елемента, първият му елемент е в индекс нула, докато последният е в четвъртия индекс.
Например в списък от пет езика за програмиране:
Езици = ["Python", "Go", "PHP", "C", "Perl"]
Индексирането за горния списък е между нула и четири. Така че опитът да го нарежете, за да отпечатате петия елемент, както е показано по-долу, дава грешка:
печат (езици[5])
Изход:
IndexError: индексът на списъка е извън обхвата
В горния пример Python се опитва да потърси петия индекс в списъка и когато не може да го намери, изхвърля грешката в индекса на списъка. Това е така, защото първият елемент (Python) е на индекс нула, докато последният (Perl) е на индекс четири.
Това е в основата на грешката „индексът на списъка е извън обхвата“. Както беше казано, Python го хвърля всеки път, когато се опитате да изрежете списък извън последния му индекс.
Как да премахнете грешката "индекс на списък извън обхвата" в Python
И така, как можете да премахнете тази грешка? Това е лесно.
В допълнение към предишния раздел по-горе, можете да отпечатате индексите, като използвате a зацикъл в разбиране на списък:
индекси = [езици.индекс (i) за i на езици]
печат (индекси)
Изход:
[0, 1, 2, 3, 4]
Индексът на списък е в основата на разделянето в програмирането. Така че, тъй като знаете най-високия индекс на списъка за изхода по-горе (4), можете да дешифрирате ограничението на среза.
Следователно, за да нарежете списъка и да получите последния елемент:
печат (езици[4])
Изход:
Perl
Сега извежда правилния резултат.
Ами ако искате да прегледате списъка, като използвате неговия индекс?
Освен редовните Python for цикъл, можете също да използвате концепцията за индекс, за да преглеждате списък. Въпреки че този метод може да изглежда труден, понякога е неизбежен. Например, това е полезно, ако искате да сортирате списък в обратен ред.
Този метод работи, като зададе начален индекс и го увеличи или намали с един до последния наличен индекс.
За да отпечатате елементите с нарастващ номер на индекса (от първия до последния елемент), например:
индекс = 0 # Начален индекс
за мен на езици:
печат (езици[индекс])
индекс +=1
Изход:
Python
Отивам
PHP
° С
Perl
Но какво се случва, ако зададете първоначалния индекс на единица вместо нула? Погледни:
индекс = 1 # Начален индекс
за мен на езици:
печат (езици[индекс])
индекс +=1
Изход:
Отивам
PHP
° С
Perl
IndexError: индексът на списъка е извън обхвата
В горния пример индексирането започва от втория елемент (индекс едно, Отивам). Така че, докато се увеличава, цикълът не спира, докато не завърши броенето за петте елемента. Това принуждава индекса да се увеличава с едно до последния елемент.
Следователно срезът удря пети индекс, който не е наличен. Така че хвърля индексна грешка. Това означава, че индексът се увеличава по следния модел за всеки елемент:
1=1, 1+1=2, 1+2=3, 1+3=4, 1+4=5
Вместо правилния модел, който е:
0=0, 0+1=1, 1+1=2, 1+2=3, 1+3=4
Както можете да видите, най-високата стойност на горния индекс е четири, което е правилно, тъй като цикълът започва да увеличава индексирането от нула.
Следователно, задаване на първоначалния индекс на нула, както направихте в първия пример в този раздел, премахва грешката „индекс на списъка извън обхвата“:
индекс = 0 # Начален индекс
за мен на езици:
печат (езици[индекс])
индекс +=1 #Увеличете индекса с едно за всяка итерация
За да приложите тази концепция за извеждане на елементите в обратен ред, ще трябва да извадите едно от дължината на масива. Така че това принуждава индекса да започне от четири и да отброява до първия индекс, нула.
Това е полезно, ако не сте сигурни за стойността на дължината на списъка, идващ от източник, да речем, база данни.
Ето един пример:
индекс = (len (езици)-1)
за мен на езици:
печат (езици[индекс])
индекс -=1 #Намалете индекса с едно за всяка итерация
Изход:
Perl
° С
PHP
Отивам
Python
Но ако не извадите едно от дължината на списъка, хвърля грешката „индекс на списък извън диапазона“:
индекс = (len (езици)-1)
за мен на езици:
печат (езици[индекс])
индекс -=1
Изход:
IndexError: индексът на списъка е извън обхвата
Горният код хвърля индексна грешка, защото дължината на списъка е пет и се опитва да започне индексирането надолу от пет до нула, докато най-високият индекс е четири. Това означава, че списъкът няма пети индекс (шести елемент).
Вземете списъци за творческа обработка в Python
Грешките на Python са лесни за хората и обикновено са четими. Неизменно това ги прави проследими в разумна степен.
Както научихте, премахването на грешката на индекса на списъка извън диапазона е доста лесно. Ако се сблъскате с тази грешка в бъдещите си програми, независимо колко сложен е списъкът, можете да приложите концепциите, обяснени в тази публикация, за да разрешите проблема.
Чувствайте се свободни да бъдете креативни със сложни списъци. Може също да искате да научите как да сортирате списъци в Python през свободното си време, за да научите по-добре всичко.
Списъците с множество типове данни могат бързо да излязат от контрол. Ето как да ги сортирате с Python.
Прочетете Следващото
- Програмиране
- Python
- Програмиране
- Съвети за кодиране
Idowu е страстен за всичко, което е интелигентна технология и производителност. В свободното си време той си играе с кодирането и преминава към шахматната дъска, когато му е скучно, но също така обича да се откъсва от рутината от време на време. Страстта му да показва на хората пътя около съвременните технологии го мотивира да пише повече.
Абонирайте се за нашия бюлетин
Присъединете се към нашия бюлетин за технически съвети, ревюта, безплатни електронни книги и ексклузивни оферти!
Щракнете тук, за да се абонирате