← Все вопросы
Как идти по индексам списка в обратную сторону через range?
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).
Ваш ответ
Войдите, чтобы ответить на вопрос.