2012-07-11 14 views
5

Qual è un buon modo per continuare a contare all'infinito? Sto cercando di scrivere una condizione che continuerà fino a quando non c'è alcun valore in un database, quindi andrà a scorrere da 0, fino a teoricamente all'infinito (all'interno di un blocco try, ovviamente).Un modo semplice per continuare a contare all'infinito

Come potrei contare all'infinito all'infinito? O dovrei usare qualcos'altro?

Sto cercando qualcosa di simile a i ++ in altre lingue, dove continua a scorrere fino al fallimento.

+0

Inoltre, perché Python non ha i ++? Letteralmente ogni altra lingua in cui ho lavorato lo fa, e sembra un buco abbagliante. –

+6

1) 'i ++' è zucchero sintattico e dubito che si possa chiamare la sua esclusione un "buco abbagliante". 2) Python usa 'i + = 1' perché è più esplicito sull'incremento. 3) Guido ha deciso che era così. –

+2

i + = 1 è solo un altro carattere –

risposta

19

Dai uno sguardo allo itertools.count().

Dalla documentazione:

count(start=0, step=1) -> conteggio degli oggetti

Crea un iteratore che restituisce i valori equidistanti partendo n. Equivalente a:

def count(start=0, step=1): 
    # count(10) --> 10 11 12 13 14 ... 
    # count(2.5, 0.5) -> 2.5 3.0 3.5 ... 
    n = start 
    while True: 
     yield n 
     n += step 

Così, per esempio:

import itertools 

for i in itertools.count(13): 
    print(i) 

genererebbe una sequenza infinita iniziano con 13, in passi di +1. E, non avevo provato prima, ma potete contare giù troppo, naturalmente:

for i in itertools.count(100, -5): 
    print(i) 

inizia a 100, e mantiene sottraendo 5 per ogni nuovo valore ....


+1

Mi colpisca ... – jamylak

+1

@jamylak ha avuto fortuna :) – Levon

+0

Non riesco a sopportare il formattatore di codice auto SO con colori errati :) – jamylak

1

Questo è un codice un po 'più piccolo di quello che l'altro utente ha fornito!

x = 1 
while True: 
    x = x+1 
    print x 
+0

Mi piace 'count' ma questo è anche valido e può tornare utile se hai bisogno di più contatori. Aggiornerebbe a 'x + = 1' – CasualDemon

0

xrange vi darà un oggetto iterabile che non utilizzare la memoria, come eseguire iterazioni, un ciclo for è più pulito di un ciclo while + contatore se mi chiedete.

import sys 
for i in xrange(0,sys.maxint): 
    print i 
Problemi correlati