2012-07-11 12 views
5

अनगिनत गिनती रखने का एक अच्छा तरीका क्या है? मैं ऐसी स्थिति लिखने की कोशिश कर रहा हूं जो डेटाबेस में कोई मूल्य नहीं होने तक जारी रहेगा, इसलिए यह सैद्धांतिक रूप से अनंतता (निश्चित रूप से एक कोशिश ब्लॉक के अंदर) से 0 से फिर से शुरू हो रहा है।असीमित रूप से गिनती रखने के लिए आसान तरीका

मैं अनन्त रूप से ऊपर की गिनती कैसे करूं? या मुझे कुछ और इस्तेमाल करना चाहिए?

मैं अन्य भाषाओं में i ++ के समान कुछ ढूंढ रहा हूं, जहां यह विफलता तक पुनरावृत्त रहता है।

+0

इसके अलावा, पायथन में i ++ क्यों नहीं है? सचमुच हर दूसरी भाषा में मैंने काम किया है, और यह एक चमकदार छेद की तरह लगता है। –

+6

1) 'i ++' वाक्य रचनात्मक चीनी है और मुझे संदेह है कि आप इसे "चमकदार छेद" बहिष्कार कह सकते हैं। 2) पायथन 'i + = 1' का उपयोग करता है क्योंकि यह वृद्धि के बारे में अधिक स्पष्ट है। 3) गिडो ने फैसला किया कि ऐसा ही था। –

+2

i + = 1 केवल एक और चरित्र है –

उत्तर

19

itertools.count() पर एक नज़र डालें।

डॉक्स से:

count(start=0, step=1) -> गिनती वस्तु

पुनरावर्तक कि समान रूप से मान देता है n के साथ शुरू करते हैं। समतुल्य:

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 
उदाहरण के लिए

तो:

import itertools 

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

उत्पन्न होगा एक अनंत अनुक्रम 13 के साथ शुरू, +1 के चरणों में। और, मैं इस से पहले की कोशिश की थी, लेकिन आप निश्चित रूप से भी नीचे भरोसा कर सकते हैं: 100 पर

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

शुरू होता है, और प्रत्येक नए मूल्य के लिए घटाकर 5 रहता है ....


+1

मुझे इसे मारो ... – jamylak

+1

@jamylak भाग्यशाली हो गया :) – Levon

+0

मैं सिर्फ एसओ ऑटो कोड फॉर्मेटर गलत रंगों को खड़ा नहीं कर सका :) – jamylak

1

यह अन्य उपयोगकर्ता द्वारा प्रदान की गई तुलना में थोड़ा छोटा कोड है!

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

मुझे 'गिनती 'पसंद है लेकिन यह भी मान्य है और यदि आपको एकाधिक काउंटर की आवश्यकता है तो यह आसान हो सकता है। 'X + = 1' पर अपडेट होगा – CasualDemon

0

xrange आप एक iterable उद्देश्य यह है कि स्मृति का उपयोग नहीं होगा, जैसा कि आप पुनरावृति, एक for पाश एक while पाश + काउंटर से क्लीनर है अगर आप मुझसे पूछें दे देंगे।

import sys 
for i in xrange(0,sys.maxint): 
    print i 
संबंधित मुद्दे