2012-03-28 12 views
19

Esiste un modo per utilizzare la funzione range() con passo -1?Intervallo Python() con passi negativi

E.g. usando range(10, -10) invece dei valori con parentesi quadra qui sotto?

cioè la seguente riga:

for y in range(10,-10) 

Invece di

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

Ovviamente si potrebbe fare questo con un altro tipo di ciclo più elegante ma l'esempio range() avrebbe funzionato molto meglio per quello che voglio.

risposta

30
range(10,-11,-1) 

In generale, non costa nulla da provare - è possibile digitare questo in l'interprete e vedere cosa fa.

Per riferimento questo è tutto documented, ma soprattutto vorrei incoraggiarvi a non avere paura di giocare e vedere cosa succede. Come puoi vedere, la tua intuizione era perfetta.

+5

Forse mi sbaglio: so che non sarebbe la prima volta, non penso che ci sia bisogno di un po 'di snervosità. Sono d'accordo che la domanda smentisce il piccolo sforzo di ricerca; tuttavia, questa potrebbe essere una cosa difficile da capire per un principiante. – bernie

+5

Probabilmente hai ragione, è un punto debole. Forse un incoraggiamento positivo sarebbe meglio ... – Useless

+1

Nessun danno nessun fallo. Avere un upvote – bernie

5

Sì, attraverso la definizione di un passo:

for i in range(10, -11, -1): 
    print(i) 
2

Sì, tuttavia è necessario specificare che si desidera tornare indietro impostando l'argomento del passaggio su -1.

Usa:

for y in range(10, -10, -1)

+1

Questo purtroppo non stampa -10 ... va da 10 a -9. –

1

In aggiunta alle altre buone risposte, c'è un'alternativa:

for y in reversed(range(-10, 11)): 

vedere la documentazione per reversed().

1

Si può notare che la funzione intervallo funziona solo in ordine crescente senza il terzo parametro. Se si utilizza senza il terzo parametro nel blocco intervallo, non funzionerà.

for i in range(10,-10) 

Il ciclo precedente non funzionerà. Affinché il ciclo sopra descritto funzioni, è necessario utilizzare il terzo parametro come numero negativo.

for i in range(10,-10,-1) 
Problemi correlati