IndexError: выход за границы
Разбираем ошибку обращения к несуществующему элементу списка.
Что такое IndexError
IndexError появляется, когда вы просите у списка элемент, которого нет. Элементы списка пронумерованы, и нумерация начинается с нуля: у списка из трёх элементов допустимые индексы — 0, 1 и 2. Обращение к индексу 3 вызовет ошибку: за границей списка ничего нет.
Почему нумерация с нуля
Это главная ловушка для новичка: первый элемент имеет индекс 0, а последний — на единицу меньше длины списка. Отсюда типичная ошибка «на единицу»: кажется, что последний элемент под номером «длина», а на самом деле под номером «длина минус один». Запомнив это, вы избежите большинства IndexError.
Как избежать
Если перебираете список, надёжнее идти циклом прямо по его элементам, а не по номерам — тогда за границу выйти невозможно. Когда индекс всё же нужен, проверяйте, что он меньше длины списка. А для доступа к последнему элементу в Python есть удобный отрицательный индекс, который всегда указывает на конец.
Частые вопросы
Почему сообщение звучит как list index out of range? Это дословно «индекс списка вне диапазона» — то есть номер больше, чем есть элементов.
Как закрепить работу со списками? На практике. В играх-тренажёрах вроде Дрон Кодера движение по клеткам поля — это по сути работа с индексами, только наглядная.
Начать игру бесплатно