На этот вопрос уже есть ответ здесь:
Я говорю о том, чтобы сделать что-то вроде:
for(i=n; i>=1; --i) {
//do something with i
}
Я могу подумать о некоторых способах сделать это в Python (создание списка диапазона (1, n +) 1)
и переверните его, используя , тогда как
и - i
, ...) но мне было интересно, есть ли более элегантный способ сделать это. Есть ли?
РЕДАКТИРОВАТЬ: Некоторые предлагали использовать xrange () вместо range (), поскольку range возвращает список, а xrange возвращает итератор. Но в Python 3 (который я использую) range () возвращает итератор, а xrange не существует.
range()
и xrange()
принимают третий параметр, задающий шаг. Поэтому вы можете сделать следующее.
range(10, 0, -1)
Что дает
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
Но для итерации на самом деле следует использовать xrange
. Итак,
xrange(10, 0, -1)
Примечание для пользователей Python 3: В Python 3 нет отдельных функций
range
иxrange
, есть толькоrange
, которая повторяет дизайнxrange
в Python 2.
for x in reversed(whatever):
do_something()
Это работает практически со всем, что имеет определенный порядок, включая объекты и списки xrange
.