IndexError: list index out of range — как починить?
Обращаюсь к элементу списка и падает IndexError: list index out of range. В каком месте искать причину?
5 ответов
Ошибка значит: ты просишь элемент по индексу, которого в списке нет. В списке из 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: вместо возни с индексами.
Скорее всего идёшь по индексам и где-то перебрал длину. Покажи строку, на которой падает — там и [i] за границей. Часто помогает просто for x in lst:.
Список пустой, а ты лезешь в [0].
Если проверять соседние элементы то нужен range(len(lst) - 1), а так смотри по задаче
Оберни в try/except и пропускай, дел-то.