← Все вопросы

Как идти по индексам списка в обратную сторону через range?

Задан 1 месяц назад409 просмотров3 ответа
11

Мне нужны именно индексы (потому что я меняю элементы по позиции), но идти надо с конца. Как правильно задать range, чтобы получить индексы от последнего к нулевому?

3 ответа

19
a = ['a', 'b', 'c', 'd']
for i in range(len(a) - 1, -1, -1):
    print(i, a[i])

Три аргумента range: старт len(a)-1 (последний индекс), стоп -1 (не включается, поэтому доходим до 0), шаг -1. Главная ловушка — стоп должен быть -1, а не 0, иначе нулевой элемент пропустится.

9

reversed(range(len(a))) — то же самое, но читается приятнее, чем три аргумента.

7

Если индекс нужен только для чтения вместе со значением — удобнее enumerate(reversed(a)), но учти, что индекс там пойдёт с 0 и не совпадёт с реальной позицией в исходном списке. Для записи по позиции лучше явный range(len(a)-1, -1, -1).

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект