web-dev-qa-db-fra.com

Boucle en arrière en utilisant des index en Python?

J'essaie de passer de 100 à 0 en boucle. Comment faire cela en Python?

for i in range (100,0) ne fonctionne pas.

199
Joan Venge

Essayez range(100,-1,-1), le troisième argument étant l'incrément à utiliser (documenté ici ).

308
0x6adb015

À mon avis, c'est le plus lisible:

for i in reversed(xrange(101)):
    print i,
166
Triptych
for i in range(100, -1, -1)

et une solution légèrement plus longue (et plus lente):

for i in reversed(range(101))

for i in range(101)[::-1]
27
kcwu

Généralement en Python, vous pouvez utiliser des indices négatifs pour commencer à partir de l’arrière:

numbers = [10, 20, 30, 40, 50]
for i in xrange(len(numbers)):
    print numbers[-i - 1]

Résultat:

50
40
30
20
10
15
Blixt

Une autre solution:

z = 10
for x in range (z):
   y = z-x
   print y

Résultat:

10
9
8
7
6
5
4
3
2
1

Astuce: Si vous utilisez cette méthode pour compter les index dans une liste, vous voudrez -1 à partir de la valeur 'y', car vos index de liste commenceront à 0.

4
Andy T.

La réponse simple pour résoudre votre problème pourrait être la suivante:

for i in range(100):
    k = 100 - i
    print k
2
enoted

Court et doux. C’était ma solution lorsque je suivais le cours de codecademy. Imprime une chaîne dans l'ordre des rev. 

def reverse(text):
    string = ""
    for i in range(len(text)-1,-1,-1):
        string += text[i]
    return string    
2
Mike

Pourquoi votre code n'a pas fonctionné

Votre code for i in range (100, 0) est correct, sauf _

le troisième paramètre (step) est par défaut +1. Vous devez donc spécifier le 3ème paramètre de range () sous la forme -1 pour revenir en arrière.

for i in range(100, -1, -1):
    print(i)

REMARQUE: ceci inclut 100 & 0 dans la sortie.

Il y a plusieurs façons.

Meilleure façon

Pour le mode Pythonic, vérifiez PEP 0322 .

Ceci est un exemple Python Python3 pour imprimer de 100 à 0 (y compris 100 & 0).

for i in reversed(range(101)):
    print(i)
2
mythicalcoder

for var in range(10,-1,-1) fonctionne

1
user2220115

Vous pouvez toujours augmenter la portée et soustraire à une variable de votre cas 100 - ii in range( 0, 101 )

for i in range( 0, 101 ):
    print 100 - i
1
pnoob

Oh, d'accord, lisais mal la question, je suppose qu'il s'agit de revenir en arrière dans un tableau? si oui, j'ai ceci:

array = ["ty", "rogers", "smith", "davis", "tony", "jack", "john", "jill", "harry", "tom", "jane", "hilary", "jackson", "andrew", "george", "rachel"]


counter = 0   

for loop in range(len(array)):
    if loop <= len(array):
        counter = -1
        reverseEngineering = loop + counter
        print(array[reverseEngineering])
0
darrell

J'ai essayé cela dans l'un des exercices de codeacademy (inversion des caractères dans une chaîne sans utiliser reverse ni :: -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')
0
Tabula Rasa

Je voulais faire défiler deux listes en même temps, il me fallait donc un index négatif. Ceci est ma solution:

a= [1,3,4,5,2]
for i in range(-1, -len(a), -1):
    print(i, a[i])

Résultat:

-1 2
-2 5
-3 4
-4 3
-5 1
0
Emanuel Lindström