Imprimer une liste dans l’ordre inverse avec l’intervalle ()?

Comment pouvez-vous produire la liste suivante avec range() en Python?

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

utiliser la fonction reversed() :

 reversed(range(10)) 

C’est beaucoup plus significatif.

Mettre à jour:

Si vous voulez qu’il soit une liste (comme btk l’a souligné):

 list(reversed(range(10))) 

Mettre à jour:

Si vous souhaitez utiliser uniquement la range pour obtenir le même résultat, vous pouvez utiliser tous ses parameters. range(start, stop, step)

Par exemple, pour générer une liste [5,4,3,2,1,0] , vous pouvez utiliser les éléments suivants:

 range(5, -1, -1) 

Cela peut être moins intuitif mais comme le mentionnent les commentaires, c’est plus efficace et la bonne utilisation de la plage pour la liste inversée.

Utilisez la fonction intégrée ‘range’. La signature est range(start, stop, step) . Cela produit une séquence qui produit des nombres, en commençant par start et en finissant si stop a été atteint, à l’exclusion de stop .

 >>> range(9,-1,-1) [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] >>> range(-2, 6, 2) [-2, 0, 2, 4] 

Dans Python 3, cela produit un object de range listée, qui fonctionne efficacement comme une liste en lecture seule (mais utilise beaucoup moins de mémoire, en particulier pour les grandes plages).

Vous pouvez utiliser range(10)[::-1] ce qui est la même chose que range(9, -1, -1) et sans doute plus lisible (si vous êtes familier avec la sequence[::-1] commune sequence[::-1] Python idiome).

 for i in range(8, 0, -1) 

va résoudre ce problème. Il affichera 8 à 1 et -1 signifie une liste inversée

Pour ceux qui s’intéressent à “l’efficacité” des options collectées jusqu’à présent …

La réponse de Jaime RGP m’a amené à redémarrer mon ordinateur après avoir chronométré la solution quelque peu “stimulante” de Jason suivant littéralement ma propre suggestion (via un commentaire). Pour épargner les curieux de votre temps d’arrêt, je vous présente ici mes résultats (les premiers):

La réponse de Jason (peut-être une simple excursion dans la compréhension de la liste ):

 $ python -m timeit "[9-i for i in range(10)]" 1000000 loops, best of 3: 1.54 usec per loop 

réponse de martineau (lisible si vous connaissez la syntaxe des tranches étendues ):

 $ python -m timeit "range(10)[::-1]" 1000000 loops, best of 3: 0.743 usec per loop 

La réponse de Michał Šrajer (celle acceptée, très lisible):

 $ python -m timeit "reversed(range(10))" 1000000 loops, best of 3: 0.538 usec per loop 

La réponse de bene (la toute première mais très sommaire à cette époque ):

 $ python -m timeit "range(9,-1,-1)" 1000000 loops, best of 3: 0.401 usec per loop 

La dernière option est facile à retenir en utilisant la notation de range(n-1,-1,-1) par Val Neekman .

La lisibilité mise à part, reversed(range(n)) semble être plus rapide que range(n)[::-1] .

 $ python -m timeit "reversed(range(1000000000))" 1000000 loops, best of 3: 0.598 usec per loop $ python -m timeit "range(1000000000)[::-1]" 1000000 loops, best of 3: 0.945 usec per loop 

Juste si quelqu’un se demandait 🙂

L’exigence dans cette question appelle une list d’entiers de taille 10 dans l’ordre décroissant. Alors, produisons une liste en python.

 # This meets the requirement. # But it is a bit harder to wrap one's head around this. right? >>> range(10-1, -1, -1) [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] # let's find something that is a bit more self-explanatory. Sounds good? # ---------------------------------------------------- # This returns a list in ascending order. # Opposite of what the requirement called for. >>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # This returns an iterator in descending order. # Doesn't meet the requirement as it is not a list. >>> reversed(range(10))  # This returns a list in descending order and meets the requirement >>> list(reversed(range(10))) [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] 

Aucun sens à utiliser l’ reverse comme méthode d’intervalle peut renvoyer la liste inversée.

Lorsque vous avez une itération sur n éléments et que vous voulez remplacer l’ordre de la liste renvoyé par la range(start, stop, step) vous devez utiliser le troisième paramètre de la plage qui identifie l’ step et la définir à -1 .

  1. Fournissez le paramètre d’ arrêt comme -1 (sa valeur précédente de stop - 1 , stop était égale à 0 ).
  2. Comme paramètre initial, utilisez n-1 .

Donc, l’équivalent de l’intervalle (n) dans l’ordre inverse serait:

 n = 10 print range(n-1,-1,-1) #[9, 8, 7, 6, 5, 4, 3, 2, 1, 0] 

Je crois que cela peut aider,

 range(5)[::-1] 

ci-dessous est utilisation:

 for i in range(5)[::-1]: print i 

Vous pouvez faire l’impression des numéros inverses avec la plage () BIF Like,

 for number in range ( 10 , 0 , -1 ) : print ( number ) 

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

range () – plage (début, fin, incrémentation / décrémentation) où le début est inclusif, la fin est exclusive et l’incrément peut être un nombre quelconque et se comporte comme une étape

 range(9,0,-1) [9, 8, 7, 6, 5, 4, 3, 2, 1] 

Utiliser sans [:: – 1] ou inversé –

 def reverse(text): result = [] for index in range(len(text)-1,-1,-1): c = text[index] result.append(c) return ''.join(result) print reverse("python!") 
 [9-i for i in range(10)] [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] 

Vous n’avez pas nécessairement besoin d’utiliser la fonction range, vous pouvez simplement faire la liste [:: – 1] qui devrait renvoyer rapidement la liste dans l’ordre inverse, sans utiliser aucun ajout.

Supposons que vous ayez une liste appelez-la a = {1,2,3,4,5} Maintenant, si vous voulez imprimer la liste en sens inverse, utilisez simplement le code suivant.

 a.reverse for i in a: print(i) 

Je sais que vous avez demandé à utiliser la gamme mais sa déjà répondu.

 range(9,-1,-1) [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] 

Est la forme correcte. Si tu utilises

 reversed(range(10)) 

vous n’obtiendrez pas un cas 0 Par exemple, disons que votre 10 n’est pas un chiffre magique et qu’une variable que vous utilisez pour rechercher commence à partir de l’inverse. Si votre cas n est 0, inversé (plage (0)) ne sera pas exécuté, ce qui est faux si vous avez par hasard un seul object dans l’index zéro.