2014-04-07 9 views
19

क्या पाइथन में अनंत पूर्णांक श्रृंखला का मूल निवासी है?मूल अनंत सीमा?

मैंने range(float('inf')) और iter(int) की कोशिश की है, लेकिन न तो काम।

मैं स्पष्ट रूप से

def int_series(next=1): 
    while True: 
     next += 1 
     yield next 

की तर्ज पर अपने ही जनरेटर लागू कर सकते हैं लेकिन यह कुछ है जो पहले से मौजूद हो की तरह लगता है।

+0

किन व्यावहारिक उद्देश्यों आप एक 'inf' की आवश्यकता होगी – sshashank124

+17

यह "मुख्य रूप से राय-आधारित" कैसे है? – arshajii

+1

मैं वही बात कहने वाला था। इस तरह के एक सुसंगत सवाल को बंद करने के लिए मतदान करना बेतुका है। – keyser

उत्तर

32

हां। यह itertools.count है:,

>>> import itertools 
>>> x = itertools.count() 
>>> next(x) 
0 
>>> next(x) 
1 
>>> next(x) 
2 
>>> # And so on... 

आप start और step तर्क निर्दिष्ट कर सकते हैं, हालांकि stop एक विकल्प नहीं है (कि क्या xrange के लिए है):

>>> x = itertools.count(3, 5) 
>>> next(x) 
3 
>>> next(x) 
8 
>>> next(x) 
13 
15

आप इसके लिए itertools.count का उपयोग कर सकते हैं।

for x in itertools.count(): 
    # do something with x infinite times 

आप पूर्णांक count() द्वारा लौटाए का उपयोग नहीं करना चाहते हैं, तो बेहतर itertools.repeat का उपयोग करें:

for _ in itertools.repeat(None): 
    # do something infinite times 
+6

का तटस्थ तत्व है यदि आप पूर्णांक नहीं चाहते हैं, 'जबकि True' अधिक उपयुक्त है। – user2357112

+0

@ user2357112 जबकि लूप एक फॉर-लूप की तुलना में धीमी गति से दोगुना हो सकता है। –

+5

यदि वह छोटा ओवरहेड वास्तव में मायने रखता है, 'जबकि 1' को बिना शर्त कूदने के लिए संकलित किया जाता है, जो लूप के लिए भी तेज है। सबसे अधिक संभावना है कि लूप बॉडी द्वारा लिया गया समय हावी होगा और अंतर कोई फर्क नहीं पड़ता। – user2357112

संबंधित मुद्दे