2014-12-28 5 views
7

Quindi immagino di voler andare su un ciclo da 0 a 100, ma saltare i numeri dispari (quindi andare "due per due").Come contare a coppie con 'range' di Python

for x in range(0,100): 
    if x%2 == 0: 
     print x 

Questo lo risolve. Ma immagino che voglio farlo saltando due numeri? E i tre? Non c'è un modo?

risposta

37

utilizzare l'argomento passo (l'ultimo, opzionale):

for x in range(0, 100, 2): 
    print x 

Si noti che se si vuole realmente mantenere i numeri dispari, diventa:

for x in range(1, 100, 2): 
    print x 

Range è a verypowerfulfeature.

+0

Hai appena modificato, ma immagino 'step = 2' anche lavorato. Ho sbagliato? –

+0

@JuanRocamonde range() non accetta argomenti di parole chiave, infatti – Jivan

+0

Ok, quindi significa che non lo farebbe. Grazie per la tua risposta –

4

(applicabile a Python < = 2.7.x solo)

In alcuni casi, se non si vuole allocare la memoria a una lista, allora si può semplicemente utilizzare la funzione xrange() al posto di la funzione range(). Produrrà anche gli stessi risultati, ma la sua implementazione è un po 'più veloce.

for x in xrange(0,100,2): 
    print x, #For printing in a line 

>>> 0, 2, 4, ...., 98 

Python 3 realtà fatta range comportano come xrange, che non esiste più.

3
for i in range(0, 100, 2): 
    print i 

Se si utilizza un IDE, ti dice la sintassi:

min, max, step (opzionale)

+0

Grazie, ma questa domanda ha già una risposta. –

+1

Sì, ma volevo dire sulla guida della sintassi IDE: P –