Рубрики
Без рубрики

Python IndexError: Индекс списка вне диапазона (как исправить эту глупую ошибку)

https://youtu.be/fe3nwcr6r2o, если вы подобны мне, вы пробуете вещи в первую очередь в своем коде и исправляете ошибки, как они приходят. Одна частая ошибка в Python является indexError: Индекс списка вне диапазона. Итак, что означает это сообщение об ошибке? Ошибка «Индекс списка из списка вне диапазона» возникает, если вы получите доступ к недействительным индексам в вашем Python … Python indexError: Индекс списка вне диапазона (как исправить эту глупую ошибку) Подробнее »

Автор оригинала: Chris.

Если вы похожи на меня, вы сначала попробуйте все в своем коде и исправить ошибки, как они приходят. Одна частая ошибка в Python – IndexError: Индекс списка вне диапазона Отказ Итак, что означает это сообщение об ошибке?

Ошибка ” Индекс списка вне диапазона «Возникает, если вы получаете доступ к недействительным индексам в вашем списке Python. Например, если вы пытаетесь получить доступ к элементу списка с индексом 100, но ваши списки состоят только из трех элементов, Python будет бросать indexError, рассказывая о том, что индекс списка не имеет диапазона Отказ

Вы хотите развивать навыки Хорошо округлый Python Professional То же оплачивается в процессе? Станьте питоном фрилансером и закажите свою книгу Оставляя крысиную гонку с Python На Amazon ( Kindle/Print )!

Давайте посмотрим на пример, где возникает эта ошибка:

lst = ['Alice', 'Bob', 'Carl']
print(lst[3])

Элемент с индексом 3 не существует в списке с тремя элементами. Это почему? Следующий график показывает, что максимальный индекс в вашем списке – 2. Вызов lst [2] потратил бы Третий Список элементов «Карл» Отказ Вы пытались получить доступ к третьему элементу с индексом 3? Это распространенная ошибка: индекс третьего элемента – 2, потому что индекс элемента первого списка составляет 0.

  • lst [0] -> Алиса
  • lst [1] -> Боб
  • lst [2] -> Карл
  • lst [3] -> ??? Ошибка ???

Попробуйте сами: Прежде чем я скажу вам, что делать с этим, попробуйте исправить код себя в нашей интерактивной оболочке Python:

Упражнение : Исправьте код в оболочке интерактивного кода, чтобы избавиться от сообщения об ошибке.

Как зафиксировать indexError в контуре для цикла? [Общая стратегия]

Итак, как вы можете исправить код? Python говорит вам, в какой строке и в каком списке возникает ошибка.

Чтобы прикрепить точную проблему, проверьте значение индекса непосредственно перед возникновением ошибки. Для достижения этого вы можете распечатать индекс, который вызывает ошибку, прежде чем использовать ее в списке. Таким образом, у вас будет неправильный индекс в оболочке прямо перед сообщением об ошибке.

Вот пример неправильного кода, который приведет к появлению ошибки:

# WRONG CODE
lst = ['Alice', 'Bob', 'Ann', 'Carl']

for i in range(len(lst)+1):
    lst[i]


# Traceback (most recent call last):
#   File "C:\Users\xcent\Desktop\code.py", line 5, in 
#     lst[i]
# IndexError: list index out of range

Сообщение об ошибке сообщает вам, что ошибка появляется в строке 5. Итак, давайте вставьте оператор печати до этой строки:

lst = ['Alice', 'Bob', 'Ann', 'Carl']

for i in range(len(lst)+1):
    print(i)
    lst[i]

Результатом этого кода-фрагмента по-прежнему ошибка. Но есть еще:

0
1
2
3
4
Traceback (most recent call last):
  File "C:\Users\xcent\Desktop\code.py", line 6, in 
    lst[i]
IndexError: list index out of range

Теперь вы можете увидеть все индексы, используемые для извлечения элемента. Последний – это индекс I = 4 Какие указывает на пятый элемент в списке (помните: Python начинает индексирование при индексе 0! ). Но в списке есть только четыре элемента, поэтому вам нужно уменьшить количество индексов, которые вы итерацииете. Правильный код, следовательно:

# CORRECT CODE
lst = ['Alice', 'Bob', 'Ann', 'Carl']

for i in range(len(lst)):
    lst[i]

Обратите внимание, что это минимальный пример, и это не имеет большого смысла. Но общая стратегия отладки остается даже для продвинутых проектов кода:

  • Выясните неисправный индекс непосредственно перед броском.
  • Устранить источник неисправного индекса.

IndexError при изменении списка по мере того, как вы повторяете его

IdmandError также часто происходит, если вы повторяете список, но вы удалите элементы, как вы итерации по списку:

l=[1,2,3,0,0,1]
for i in range(0, len(l)):
       if l[i]==0:
           l.pop(i)

Этот фрагмент кода от A Stackoverflow вопрос. Источник просто то, что list.pop () Метод Удаляет элемент со значением 0. Все последующие элементы теперь имеют меньший индекс. Но вы идете за все индексы до Лен (л) -1-1 и индекс 5 не существует в списке после удаления элементов в предыдущей итерации.

Вы можете просто исправить это с помощью оператора понимания короткого списка, который выполняет то же самое:

l = [x for x in l if x]

Только ненулевые элементы включены в список.

String indexError: Индекс списка вне диапазона

Ошибка может возникнуть при доступе к строкам:

s = 'Python'
print(s[6])

Чтобы исправить ошибку для строк, убедитесь, что индекс падает между диапазоном 0 ... ЛЕН (S) -1 (Включено):

s = 'Python'
print(s[5])
# n

Tuple indexError: Индекс списка вне диапазона

На самом деле, indexError может возникнуть для всех упорядоченных коллекций, где вы можете использовать индексацию для получения определенных элементов. Таким образом, это также происходит при доступе к индексам кортежей, которые не существуют:

s = ('Alice', 'Bob')
print(s[2])

Опять же, начните считать с индексом 0, чтобы избавиться от этого:

s = ('Alice', 'Bob')
print(s[1])
# Bob

Примечание : Индекс последнего элемента в любой последовательности Лен (последовательность) -1 .

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.