Imprimer une liste dans l'ordre inverse avec range() ?

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

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

utiliser la fonction reversed() :

reversed(range(10))

C'est beaucoup plus parlant.

Mise à jour:

Si vous voulez que ce soit une liste (comme btk l'a souligné) :

list(reversed(range(10)))

Mise à jour :

Si vous voulez utiliser uniquement range pour obtenir le même résultat, vous pouvez utiliser tous ses paramètres. range(start, stop, step)

Par exemple, pour générer une liste [5,4,3,2,1,0], vous pouvez utiliser ce qui suit :

range(5, -1, -1)

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

Commentaires (11)

Utilisez la fonction intégrée 'range&#39 ;. La signature est range(start, stop, step). Cela produit une séquence qui donne des nombres, en commençant par start, et en finissant si stop a été atteint, en excluant stop.

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

En Python 3, ceci produit un objet range non-listé, qui fonctionne effectivement comme une liste en lecture seule (mais utilise beaucoup moins de mémoire, particulièrement pour les grandes plages).

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