← Все вопросы
IndexError: list index out of range — как починить?
18
Обращаюсь к элементу списка и падает IndexError: list index out of range. В каком месте искать причину?
4 ответа
22
✓ Принятый ответ — помог автору
Ошибка значит: ты просишь элемент по индексу, которого в списке нет. В списке из 3 элементов индексы 0, 1, 2 — а lst[3] уже выход за границу.
Частые причины:
lst = [10, 20, 30]
lst[3] # нет такого индекса
lst[len(lst)] # классика: len == 3, а последний индекс 2
for i in range(len(lst)+1): # +1 лишний
print(lst[i])
Чинить: использовать range(len(lst)) без +1, последний элемент брать как lst[-1], а если список может быть пустым — проверять if lst: перед обращением. И почти всегда лучше итерироваться прямо по элементам: for x in lst: вместо возни с индексами.
Михаил Виноградов было +1 в range, спасибо! · 2 месяца назад
6
Скорее всего идёшь по индексам и где-то перебрал длину. Покажи строку, на которой падает — там и [i] за границей. Часто помогает просто for x in lst:.
4
Список пустой, а ты лезешь в [0].
-5
Оберни в try/except и пропускай, дел-то.
Евгений Смирнов так баг же замаскируешь, а не починишь — лучше понять, почему индекс вылазит · 1 месяц назад
Ваш ответ
Войдите, чтобы ответить на вопрос.