48 votes

Python range() avec des strides négatifs

Existe-t-il un moyen d'utiliser le range() avec stride -1 ?

Par exemple, en utilisant range(10, -10) au lieu des valeurs entre crochets ci-dessous ?

C'est-à-dire la ligne suivante :

for y in range(10,-10)

Au lieu de

for y in [10,9,8,7,6,5,4,3,2,1,0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10]:

Il est évident que l'on pourrait faire cela avec un autre type de boucle de manière plus élégante mais la range() exemple fonctionnerait beaucoup mieux pour ce que je veux.

0voto

2RMalinowski Points 71

Si vous préférez, créez la liste dans l'intervalle :

numbers = list(range(-10, 10))

0 votes

Une alternative intelligente !

0voto

Pour résumer, ces 3 approches sont les plus efficaces et les plus pertinentes pour répondre, je pense :

first = list(x for x in range(10, -11, -1))

second = list(range(-10, 11))

third = [x for x in reversed(range(-10, 11))]

Alternativement, NumPy serait plus efficace car il crée un tableau comme ci-dessous, ce qui est beaucoup plus rapide que de créer et écrire des éléments dans la liste en python. Vous pouvez ensuite le convertir en liste :

import numpy as np

first = -(np.arange(10, -11, -1))

Remarquez le signe de négation pour "premier".

second = np.arange(-10, 11)

Convertissez-le en liste comme suit ou utilisez-le comme type numpy.ndarray.

to_the_list = first.tolist()

0voto

Goli Points 1

Dans votre cas, en utilisant range(10,-10,-1) sera utile. Le premier argument fait référence à la première étape, le second à la dernière étape et le troisième à la taille de cette étape. Lorsque votre plage est ascendante, vous n'avez pas besoin de spécifier les étapes si vous avez besoin de tous les nombres intermédiaires, range(-10,10) o range(-10,-5) .

Mais lorsque votre plage est descendante, vous devez spécifier la taille du pas comme -1, range(10,-10,-1) ou toute autre étape plus importante.

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