2012-07-11 18 views
5

Jaki jest dobry sposób na nieprzerwane liczenie? Próbuję napisać warunek, który będzie kontynuowany, dopóki nie będzie żadnej wartości w bazie danych, więc iteruje od 0 do teoretycznie nieskończoności (oczywiście w bloku try).Łatwy sposób na nieprzerwane odliczanie

Jak mogę policzyć w nieskończoność? Czy powinienem użyć czegoś innego?

Szukam czegoś podobnego do i ++ w innych językach, gdzie przechowuje iterację aż do awarii.

+0

Co więcej, dlaczego Python nie ma i ++? Dosłownie każdy inny język, w którym pracowałem, wygląda na rażącą dziurę. –

+6

1) 'i ++' jest cukrem syntaktycznym i wątpię, czy można go nazwać "rażącą dziurą". 2) Python używa 'i + = 1', ponieważ jest bardziej jednoznaczny o inkrementacji. 3) Guido zdecydował, że tak jest. –

+2

i + = 1 to tylko jeszcze jedna postać. –

Odpowiedz

19

Spójrz na itertools.count().

Od docs:

count(start=0, step=1) -> Ilość obiekt

Złóż iterator, która zwraca wartości rozmieszczone równomiernie zaczynając n. równoważny:

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 

więc na przykład:

import itertools 

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

wygeneruje nieskończony sekwencji począwszy od 13, w etapach od +1. A ja nie próbował tego wcześniej, ale można odliczać zbyt przedmiotu:

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

startów na 100, i utrzymuje odjęcie 5 dla każdej nowej wartości ....


+1

Pokonaj mnie ... – jamylak

+1

@jamylak miał szczęście :) – Levon

+0

Po prostu nie mogłem znieść nieprawidłowego kolorowania formatu kodu AS :) :) – jamylak

1

ten jest trochę mniejszy niż ten, który dostarczył inny użytkownik!

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

Lubię 'count', ale jest to również ważne i może się przydać, jeśli potrzebujesz wielu liczników. Aktualizacja do 'x + = 1' – CasualDemon

0

xrange daje iterable obiektu, który nie będzie używany jako pamięć iteracyjne, o for pętla jest czystsze niż while pętli + licznik jeśli chodzi o mnie.

import sys 
for i in xrange(0,sys.maxint): 
    print i 
Powiązane problemy