← Все вопросы
IndexError: list index out of range при обходе списка по range(len)
6
Хочу вывести соседние пары элементов, но получаю IndexError: list index out of range:
a = [10, 20, 30]
for i in range(len(a)):
print(a[i], a[i + 1])
Вроде по индексам иду правильно, почему вылетает?
2 ответа
11
✓ Принятый ответ — помог автору
Список длиной 3 имеет индексы 0, 1, 2. На последней итерации i = 2, и ты обращаешься к a[i + 1] = a[3] — а такого индекса уже нет. Отсюда index out of range.
Если берёшь пары (текущий + следующий), цикл должен останавливаться на один раньше:
for i in range(len(a) - 1):
print(a[i], a[i + 1])
Теперь i доходит только до 1, и a[i+1] максимум a[2] — всё в пределах.
4
Более питоновский способ ходить по парам — через zip:
for cur, nxt in zip(a, a[1:]):
print(cur, nxt)
Тут вообще нет индексов, и за границы выйти невозможно.
Ваш ответ
Войдите, чтобы ответить на вопрос.