range()
और xrange()
10-अंकों के लिए काम करते हैं। लेकिन 13 अंकों की संख्या के बारे में कैसे? मुझे मंच में कुछ भी नहीं मिला।रेंज और xrange?
उत्तर
आप इस कोशिश कर सकते की एक सूची के लिए स्मृति को आबंटित नहीं करना चाहिए। सीमा के रूप में एक ही अर्थ विज्ञान:
import operator
def lrange(num1, num2 = None, step = 1):
op = operator.__lt__
if num2 is None:
num1, num2 = 0, num1
if num2 < num1:
if step > 0:
num1 = num2
op = operator.__gt__
elif step < 0:
num1 = num2
while op(num1, num2):
yield num1
num1 += step
>>> list(lrange(138264128374162347812634134, 138264128374162347812634140))
[138264128374162347812634134L, 138264128374162347812634135L, 138264128374162347812634136L, 138264128374162347812634137L, 138264128374162347812634138L, 138264128374162347812634139L]
एक अन्य समाधान, itertools.islice
का उपयोग करेंगे के रूप में xrange
के documentation
'itertools.islice' संदर्भ – jfs
64-बिट अजगर पर:
>>> xrange(9999999999999)
xrange(9999999999999)
मैं एक 13 अंकों की संख्या के लिए range()
का उपयोग नहीं होता। मेरी खराब मशीन परिणामी सूची को पकड़ने में सक्षम नहीं होगी।
मुझे 'ओवरफ्लो त्रुटि: int int में कनवर्ट करने के लिए बहुत लंबा int' पाइथन 2.5 अगर मैं कोशिश करता हूं। –
दिलचस्प। मैं यहाँ 2.6 चला रहा हूँ। अपडेट किया गया। –
मुझे 2.6.2 में 'ओवरफ्लो एरर' मिलता है। – MAK
मुझे नहीं लगता कि यह काम करेगा। len
जैसे कार्यों को सीपीथन कार्यान्वयन में प्रतिबंधों के कारण परिणाम 4 बाइट पूर्णांक में फिट होने की उम्मीद है।
अजगर 3.0 में:
>>> range(9999999999999)
range(0, 9999999999999)
ऐसा लगता है कि यह काम करता है, लेकिन ...
>>> len(range(9999999999999))
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
len(range(9999999999999))
OverflowError: Python int too large to convert to C ssize_t
एक संबंधित प्रश्न के लिए here देखें।
सीमा बनाने के साथ कोई समस्या नहीं है, जब तक आप 10 ** 13 तत्व नहीं चाहते हैं, उदा।
range(10**14,10**15,10**14)
देता
[100000000000000, 200000000000000, 300000000000000, 400000000000000, 500000000000000, 600000000000000, 700000000000000, 800000000000000, 900000000000000]
यह xrange के साथ काम नहीं करता है, जो केवल 32-बिट संख्याओं (32-बिट सिस्टम पर) पर काम करता है। –
यह सच है। मेरा सिस्टम 64-बिट है, इसलिए xrange केवल sys.maxint = 2^63-1 लगभग 10^19 तक काम करता है। – Ramashalanka
रेंज (एक्स) एक list.Python को सूचीबद्ध नहीं कर सकते कई तत्व जिनमें देता है। यदि आपको चक्रों के ट्रिलियन करने की आवश्यकता है तो आपको उन अंकों के माध्यम से फिर से चलाने के लिए xrange() का उपयोग करना चाहिए।
रेंज() और xrange() पायथन के हाल के पर्याप्त संस्करणों में काम करते हैं; हालांकि, 2.5 या उससे कम में आपको int से लंबे रूपांतरण के आसपास काम करने की आवश्यकता होगी।
def irange(start, stop=None, step=1):
if stop is None:
stop = long(start)
num = 1L
else:
stop = long(stop)
num = long(start)
step = long(step)
while num < stop:
yield num
num += step
यह एक पूर्ण समाधान नहीं है (यह नकारात्मक चरणों को संभाल नहीं करता है), लेकिन यह आपको जाना चाहिए।
अगर आप पूर्णांक itertools उपयोग करने का प्रयास की गणना की जरूरत है:
itertools.count(1000000000000)
यह 1000000000000
तत्वों
रेंज() और xrange (के बीच अंतर) में सुझाव दिया है कि पहली रिटर्न पूरी सूची है, जबकि दूसरा एक जेनरेटर देता है जो प्रत्येक नंबर को आवश्यकतानुसार उत्पन्न करता है। दूसरे को किसी भी संख्या के लिए काम करना चाहिए, भले ही कितना बड़ा हो।
पायथन 3.0 में, xrange() गायब हो गया है और रेंज() पहले xrange() जैसा व्यवहार करता है।
' xrange' के लिए +1 मनमाने ढंग से बड़ी संख्या के लिए काम नहीं करता है। –
इस समस्या को आप इस तरह लंबे समय तक नंबर की जरूरत नहीं है, क्योंकि आप केवल प्रधानमंत्री कारकों की जरूरत है, तो आप वर्गमूल उपयोग कर सकते हैं की sollution के लिए:
for i in xrange(2, int((n+1)**0.5)):
- 1. 'i i xrange (len (x))'
- 2. रेंज
- 3. सामग्री-रेंज और रेंज हेडर के बीच अंतर?
- 4. रेंज
- 5. रेंज
- 6. रेंज
- 7. रेंज
- 8. इंडेक्स एरर: रेंज और पायथन
- 9. आरजीबी रेंज?
- 10. आईओएस: रेंज
- 11. SqlDbType.DateTime रेंज
- 12. थोड़ा रेंज
- 13. आईपी रेंज
- 14. एक्सेल रेंज
- 15. रेंज चेक त्रुटि और डेल्फी 7.0
- 16. एक्सेल वीबीए: टाइप रेंज और सेल
- 17. जाओ: बहुआयामी सरणी की रेंज और लेन?
- 18. एंड्रॉइड एक्सेलेरोमीटर मिनट और अधिकतम रेंज
- 19. CouchDB समूह स्तर और कुंजी रेंज
- 20. कुछ और 100 के बीच रेंज एनोटेशन?
- 21. Google टेस्ट और std :: वेक्टर रेंज अपवाद
- 22. रूबी रेंज
- 23. mySQL रेंज
- 24. रेंज नंबर
- 25. एक्सेल वीबीए उपयोगकर्ता द्वारा चुनी गई रेंज की रेंज माउस
- 26. इंटीजर रेंज में फ़्लोट रेंज को कनवर्ट/क्वांटिज़ करें
- 27. HTTP रेंज हेडर
- 28. जावा में रेंज लुकअप
- 29. कैसंद्रा रेंज क्वेरीज
- 30. आईपी सीआईडीआर रेंज में
संबंधित: http://stackoverflow.com/questions/2128989/पायथन-लेन-और-आकार-के-इन्स –
आप वास्तव में क्या करने की कोशिश कर रहे हैं? आपको इतनी बड़ी श्रेणियों की आवश्यकता क्यों है? –
मैं यूलर-प्रोजेक्ट नंबर 15 को हल करने का प्रयास करता हूं। शायद मुझे एक नया प्रश्न पूछना चाहिए। – kame