पायथन में, एक सरणी/सूची कितनी बड़ी हो सकती है? मुझे लगभग 12000 तत्वों की एक सरणी चाहिए। क्या मैं अभी भी सरणी/सूची विधियों जैसे सॉर्टिंग आदि चलाने में सक्षम हूं?पाइथन ऐरे कितना बड़ा हो सकता है?
उत्तर
source code के अनुसार, सूची का अधिकतम आकार PY_SSIZE_T_MAX/sizeof(PyObject*)
है।
PY_SSIZE_T_MAX
pyport.h में परिभाषित किया गया है ((size_t) -1)>>1
एक नियमित रूप से 32bit प्रणाली पर हो सकता है, यह (4294967295/2)/4 या 536870912.
इसलिए एक 32 बिट पर एक अजगर सूची का अधिकतम आकार है प्रणाली 536,870,912 तत्व है।
जब तक आपके पास मौजूद तत्वों की संख्या बराबर या उससे कम है, तो सभी सूची कार्यों को सही तरीके से कार्य करना चाहिए।
'sizeof (PyObject *) == 4 क्यों है?'? यह क्या दर्शाता है? – Matt
@ मैट, एकल 'पायओब्जेक्ट *' के बाइट्स की संख्या है। यह बात एक तथाकथित सूचक है (आप उन्हें अंत में क्षुद्रग्रह की वजह से पहचानते हैं)। पॉइंटर्स 4 बाइट लंबा होते हैं और आवंटित ऑब्जेक्ट में मेमोरी एड्रेस स्टोर करते हैं। वे "केवल" 4 बाइट लंबे हैं क्योंकि 4 बाइट्स के साथ आप आजकल कंप्यूटर की याद में हर तत्व को संबोधित कर सकते हैं। –
यह ध्यान देने योग्य है (जैसा कि अलवारो जस्टेन का उत्तर इंगित करता है) कि अन्य मशीनों पर, विशेष रूप से 64-बिट सिस्टम चलाने वाले, 'PY_SSIZE_T_MAX' का मान बहुत अधिक हो सकता है। –
12000 तत्व पायथन में कुछ भी नहीं है ... और असल में तत्वों की संख्या आपके सिस्टम पर पाइथन दुभाषिया की याददाश्त तक जा सकती है।
मैं कहूंगा कि आप केवल कुल रैम उपलब्ध हैं। जाहिर है कि सरणी जितनी बड़ी होगी, उस पर लंबे समय तक संचालन होगा।
आम तौर पर सच है, लेकिन उनमें से सभी नहीं - संलग्नक सरणी के आकार से स्वतंत्र निरंतर समय बनी हुई है। – cdleary
दिलचस्प, टिप्पणी के लिए धन्यवाद। –
निश्चित रूप से यह ठीक है। वास्तव में आप आसानी से अपने आप के लिए देख सकते हैं:
l = range(12000)
l = sorted(l, reverse=True)
मेरी मशीन पर उन पंक्तियों के चल रहा है ले लिया:
real 0m0.036s
user 0m0.024s
sys 0m0.004s
लेकिन सभी के रूप में यकीन है कि किसी और ने कहा। जितना बड़ा सरणी ऑपरेशन धीमा होगा।
इस तरह का समय भ्रामक हो सकता है - अधिकांश समय पाइथन दुभाषिया शुरू करने में व्यतीत होता है। एक बेहतर तरीका यह है: पायथन -एम timeit.py "एल = रेंज (12000); एल = क्रमबद्ध (एल, रिवर्स = ट्रू)"। मेरी मशीन पर यह इस उदाहरण के लिए लगभग 1/20 वें समय देता है। –
@ डीएफ, आप सटीकता के बारे में सही हैं। उस पर ध्यान देने के लिए धन्यवाद। मैं बस एक बिंदु साबित करना चाहता था। और उदाहरण यह साबित करता है। –
@ डीएफ: बहुत बढ़िया! 0.024s मेरे लिए बहुत लंबा था और मुझे खुशी है कि मैं इसके बारे में चिंता करना बंद कर सकता हूं। –
आकस्मिक कोड में मैंने लाखों तत्वों के साथ सूचियां बनाई हैं। मेरा मानना है कि पाइथन का सूचियों का कार्यान्वयन केवल आपके सिस्टम पर स्मृति की मात्रा से बंधे हैं।
इसके अतिरिक्त, सूची विधियों/कार्यों को सूची के आकार के बावजूद काम करना जारी रखना चाहिए।
यदि आप प्रदर्शन की परवाह करते हैं, तो NumPy जैसी लाइब्रेरी को देखना उचित हो सकता है।
Performance characteristics for lists Effbot पर वर्णित हैं।
पायथन सूची वास्तव में तेज़ यादृच्छिक पहुंच के लिए वेक्टर के रूप में लागू की जाती है, इसलिए कंटेनर मूल रूप से स्मृति में स्थान के रूप में कई वस्तुओं को पकड़ लेगा। (आपको सूची में निहित पॉइंटर्स के साथ-साथ ऑब्जेक्ट (ओं) की ओर इशारा करने के लिए स्मृति में स्थान की आवश्यकता है।)
O(1)
(अमूर्त निरंतर जटिलता) संलग्न है, हालांकि, बीच के मध्य में डालने/हटाने अनुक्रम को O(n)
(रैखिक जटिलता) रीडरिंग की आवश्यकता होगी, जो आपकी सूची में तत्वों की संख्या के रूप में धीमी हो जाएगी।
आपका सॉर्टिंग प्रश्न अधिक प्रचलित है, क्योंकि तुलना ऑपरेशन एक असीमित समय ले सकता है। यदि आप वास्तव में धीमी तुलना कर रहे हैं, तो इसमें काफी समय लगेगा, हालांकि Python's list data type की कोई गलती नहीं है।
रिवर्सल सूची में सभी पॉइंटर्स को स्वैप करने के लिए आवश्यक समय लेता है (आवश्यक O(n)
(रैखिक जटिलता), क्योंकि आप प्रत्येक पॉइंटर को एक बार स्पर्श करते हैं)।
रूप Python documentation says:
sys.maxsize
सबसे बड़ा सकारात्मक पूर्णांक मंच के Py_ssize_t प्रकार द्वारा समर्थित, और इस तरह अधिकतम आकार सूची, तार, dicts, और कई अन्य कंटेनरों कर सकते हैं की है।
अपने कंप्यूटर में (लिनक्स x86_64):
>>> import sys
>>> print sys.maxsize
9223372036854775807
वहाँ सूची संख्या की कोई सीमा नहीं है। आपकी वजह से मुख्य कारण रैम है। कृपया अपनी मेमोरी आकार को अपग्रेड करें।
-1 सही है क्योंकि यह वास्तव में प्रश्न का उत्तर नहीं देता है, और वास्तव में भ्रामक है क्योंकि (जैसा कि अन्य उत्तरों द्वारा दिखाया गया है) सूची में वास्तव में एक है अधिकतम आकार। –
- 1. एपेंगीन कार्य पेलोड कितना बड़ा हो सकता है?
- 2. डेटा कितना तेज़ है। ऐरे?
- 3. "बिगडाटा" कितना बड़ा डेटा है?
- 4. छोटा, सामान्य, बड़ा और xlarge कितना बड़ा है?
- 5. XP/SCRUM के लिए कितना बड़ा है?
- 6. आरएसएस फ़ीड एक्सएमएल फ़ाइल के लिए कितना बड़ा बड़ा है?
- 7. पृष्ठभूमि छवियों में आने पर कितना बड़ा बड़ा है?
- 8. GUID कितना छोटा हो सकता है?
- 9. सिल्वरलाइट इंस्टॉल बेस - यह कितना बड़ा है?
- 10. जीसीसी के साथ wchar_t कितना बड़ा है?
- 11. पर्ल की रैंड के लिए तर्क कितना बड़ा हो सकता है?
- 12. प्रदर्शन से पहले एक MySQL डेटाबेस कितना बड़ा हो सकता है
- 13. पाइथन कहने में कितना ऑपरेटिंग सिस्टम लिखा जा सकता है?
- 14. हेडर सहित आईपी पैकेट फ्रेम कितना बड़ा है?
- 15. क्या PHP ऐरे कुंजी के पास उपनाम हो सकता है?
- 16. सबसे बड़ा प्रकार उपलब्ध हो रहा है
- 17. जावास्क्रिप्ट टेबल सॉर्टिंग/पेजिंग (क्लाइंट-साइड)। कितना बड़ा बहुत बड़ा है?
- 18. पाइथन का समय कितना सटीक है। नींद()?
- 19. ओरेकल और पोस्टग्रेएसक्यूएल के बीच प्रदर्शन अंतर कितना बड़ा है?
- 20. कितना बड़ा आरएसएस रीडर काम करता है (netvibes, Google reader ...)
- 21. वास्तव में पाइथन से बहुत तेज हो सकता है?
- 22. कितना समवर्ती http अनुरोध संभाल सकता है
- 23. सबसे बड़ा आकार क्या है जो एक .msi विंडोज़ पैकेज इंस्टॉलर फ़ाइल हो सकता है?
- 24. पॉलीगॉन छेड़छाड़ विफल हो जाती है, टकराव "आकार" बहुत बड़ा
- 25. Response.IsClientConnected कितना उपयोगी है?
- 26. देखें और देखें मॉडल बहुत बड़ा हो रहा है
- 27. बड़ी स्क्रीन पर फोंट बड़ा हो रहा है
- 28. पाइथन प्रोग्राम कब तक चलने में कितना समय लगता है?
- 29. गेम विकास के लिए पाइथन कितना धीमा है?
- 30. पाइथन में पुराना हो गया है?
पायथन में सरणी और सूचियों के बीच एक बड़ा अंतर है। – recursive