Как выполнить цикл в Python в обратном направлении? [duplicate]

На этот вопрос уже есть ответ здесь:

Я говорю о том, чтобы сделать что-то вроде:

for(i=n; i>=1; --i) {
   //do something with i
}

Я могу подумать о некоторых способах сделать это в Python (создание списка диапазона (1, n +) 1) и переверните его, используя , тогда как и - i , ...) но мне было интересно, есть ли более элегантный способ сделать это. Есть ли?

РЕДАКТИРОВАТЬ: Некоторые предлагали использовать xrange () вместо range (), поскольку range возвращает список, а xrange возвращает итератор. Но в Python 3 (который я использую) range () возвращает итератор, а xrange не существует.

160
задан snakile 13 August 2010 в 16:37
поделиться

2 ответа

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.

252
ответ дан 23 November 2019 в 21:29
поделиться
for x in reversed(whatever):
    do_something()

Это работает практически со всем, что имеет определенный порядок, включая объекты и списки xrange .

122
ответ дан 23 November 2019 в 21:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: