Я пытаюсь сделать цикл от 100 до 0. Как это сделать в Python?Цикл назад с использованием индексов в Python?
for i in range (100,0)
не работает.
Я пытаюсь сделать цикл от 100 до 0. Как это сделать в Python?Цикл назад с использованием индексов в Python?
for i in range (100,0)
не работает.
Попробуйте range(100,-1,-1)
, третий аргумент является приращением для использования (задокументировано here).
вы также можете использовать xrange вместо диапазона, если вам не нужен список номеров, но это правильный ответ. –
Также мне нужно использовать это, чтобы удалить элементы из коллекции, поэтому просто нужны индексы. –
Какой второй аргумент? – deltanine
for i in range(100, -1, -1)
и некоторые немного больше (и медленнее) решение:
for i in reversed(range(101))
for i in range(101)[::-1]
На мой взгляд, это наиболее читаемым:
for i in reversed(xrange(101)):
print i,
Это лучше, чем принятый ответ, поскольку он фактически не выделяет все числа в памяти (в Python 3 принятый ответ тоже не будет), а также более очевидно, что происходит. – Blixt
Python до 2.6 действительно выделяет все числа, потому что reverseed не имеет возможности сказать xrange вернуться назад ... (Так как Python 2.6 вызывает __перечисленный __().) –
@Triptych thanks предпочитает это решение – zulucoda
Вообще в Python, вы можете использовать отрицательные индексы для запуска со спины:
numbers = [10, 20, 30, 40, 50]
for i in xrange(len(numbers)):
print numbers[-i - 1]
Результат:
50
40
30
20
10
Другое решение:
z = 10
for x in range (z):
y = z-x
print y
Результат:
10
9
8
7
6
5
4
3
2
1
Совет: Если вы используете этот метод для подсчета обратно индексов в списке, вы хотите -1 из значения «y», так как индексы вашего списка начинаются с 0.
for var in range(10,-1,-1)
работы
Я попробовал это в одном из codeacademy упражнений (реверсивных символов в строке без использования обратной ни :: -1)
def reverse(text):
chars= []
l = len(text)
last = l-1
for i in range (l):
chars.append(text[last])
last-=1
result= ""
for c in chars:
result += c
return result
print reverse('hola')
Короткий и сладкий. Это было моим решением при курсе CodeAcademy. Распечатывает строку в порядке очереди.
def reverse(text):
string = ""
for i in range(len(text)-1,-1,-1):
string += text[i]
return string
Или 'text [:: - 1]' – PascalVKooten
a = 10
for i in sorted(range(a), reverse=True):
print i
Добро пожаловать в переполнение стека! Пожалуйста, рассмотрите возможность редактирования сообщения, чтобы добавить больше объяснений о том, что делает ваш код, и почему он решит проблему. Ответ, который в основном содержит только код (даже если он работает), обычно не помогает OP понять их проблему. – SuperBiasedMan
Вы понимаете, что использование 'sorted' будет бесполезно хранить весь список в памяти, не так ли? Это расточительно и нецелесообразно для больших 'a'. –
Почему ваш код не работает
вас код for i in range (100, 0)
отлично, за исключением того,
третий параметр (step
) по умолчанию +1
. Таким образом, вы должны указать третий параметр для range() как -1
для перехода назад.
for i in range(100, -1, -1):
print(i)
Примечание: Это включает в себя 100 & 0 на выходе.
Существует несколько способов.
лучший способ
Для вещий образом, проверьте PEP 0322.
Это пример python3 для печати от 100 до 0 (включая 100 & 0).
for i in reversed(range(101)):
print(i)
Вы всегда можете сделать увеличение дальности и вычесть из переменных в вашем случае 100 - i
где i in range(0, 101)
.
for i in range(0, 101):
print 100 - i
Простой ответ, чтобы решить вашу проблему может выглядеть так:
for i in range(100):
i = 100 - i
print i
Лучший способ заключается в использовании функции генерации диапазона
Случай 1. Когда мы знаем, что есть определенное число итераций мы может просто использовать функцию диапазона, такую как
Перед использованием диапазона() позвольте мне дать краткое описание диапазона()
Он принимает три параметра первого начинают номер 2-й номер последнего, кроме этого одного 3 разницы между каждой итерацией
for step in range(5,-1,-1):
print(step)
Случаем 2, когда у нас есть список, и мы хотим перебрать список в обратном порядке
words = ['cat','xat','hat','mat']
for word in range(len(words)-1,-1,-1):
print(words[word])
Кстати, вы, вероятно, захотите зациклиться от 99 до 0 и редко от 100 до 0. Это влияет на ответы. –