2012-07-11 27 views
5

¿Cuál es una buena forma de seguir contando infinitamente? Intento escribir una condición que continuará hasta que no haya ningún valor en una base de datos, por lo que se repetirá desde 0, hasta teóricamente infinito (dentro de un bloque de prueba, por supuesto).Manera fácil de seguir contando infinitamente

¿Cómo puedo contar hacia arriba infinitamente? ¿O debería usar algo más?

Estoy buscando algo similar a i ++ en otros idiomas, donde sigue iterando hasta fallar.

+0

Además, ¿por qué Python no tiene i ++? Literalmente, todos los demás lenguajes en los que he trabajado lo hacen, y parece un agujero evidente. –

+6

1) 'i ++' es azúcar sintáctico y dudo que pueda llamar a su exclusión un "agujero evidente". 2) Python usa 'i + = 1' porque es más explícito sobre el incremento. 3) Guido decidió que era así. –

+2

i + = 1 es solo un personaje más –

Respuesta

19

Eche un vistazo a itertools.count().

A partir de los documentos:

count(start=0, step=1) -> recuento de objetos

Hacer un iterador que devuelve valores iguales de tiempo a partir de 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 

Así, por ejemplo:

import itertools 

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

generaría una secuencia infinita comenzando con 13, en pasos de 1. Y, no lo había intentado esto antes, pero usted puede contar también, por supuesto:

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

comienza en 100, y mantiene restando 5 para cada nuevo valor ....


+1

Muéstremela ... – jamylak

+1

@jamylak tiene suerte :) – Levon

+0

Simplemente no podía soportar el formateador de códigos de auto SO. Colores incorrectos :) – jamylak

1

Este es un código un poco más pequeño que lo que el otro usuario proporcionó!

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

Me gusta 'contar', pero esto también es válido y puede ser útil si necesita varios contadores. Actualizaría a 'x + = 1' – CasualDemon

0

xrange le dará un objeto iterable que no va a utilizar la memoria como iterar, un bucle for es más limpio que un bucle while + contador si usted me pregunta.

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