242 votes

Comment faire une boucle arrière en python?

Je parle de faire quelque chose comme:

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

Je peux penser à des façons de le faire en python (création d'une liste d' range(1,n+1) et l'inverser, à l'aide de while et --i, ...), mais je me demandais si il y a une façon plus élégante de le faire. Est-il?

EDIT: Certains ont suggéré-je utiliser xrange() au lieu de la plage() depuis la plage renvoie une liste de tout xrange retourne un itérateur. Mais en Python 3 (que j'utilise) range() retourne un itérateur et xrange n'existe pas.

384voto

Chinmay Kanchi Points 16353

range() et xrange() prennent un troisième paramètre qui spécifie une étape. Donc, vous pouvez faire ce qui suit.

 range(10, 0, -1)
 

Qui donne

 [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] 
 

Mais pour l'itération, vous devriez vraiment utiliser xrange place. Alors,

 xrange(10, 0, -1)
 

2voto

alex.hunter Points 26

Pour inverser une chaîne sans utiliser reversed ou [::-1] , essayez quelque chose comme:

 def reverse(text):
    # Container for reversed string
    txet=""

    # store the length of the string to be reversed
    # account for indexes starting at 0
    length = len(text)-1

    # loop through the string in reverse and append each character
    # deprecate the length index
    while length>=0:
        txet += "%s"%text[length]
        length-=1
    return txet
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X