इन बिल्ट-इन अजगर डेटा प्रकार के बीच क्या अंतर है? जैसा कि मैंने इसे देखा, सभी तीन अनिवार्य रूप से प्रतिनिधित्व करते हैं कि सी ++ और जावा कॉल सर क्या है। , तार:पायथन में सूची, अनुक्रम और टुकड़ा के बीच अंतर? <em>सूची</em>, <em>अनुक्रम</em> और <em>टुकड़ा</em>:
पायथन में सूची, अनुक्रम और टुकड़ा के बीच अंतर? <em>सूची</em>, <em>अनुक्रम</em> और <em>टुकड़ा</em>:
उत्तर
list
सादे सरणी से अधिक हैं। आप वस्तुओं की संख्या के बिना उन्हें प्रारंभ कर सकते हैं। आपappend
/push
कर सकते हैं, आपremove
/pop
/del
आइटम से आइटम प्राप्त कर सकते हैं, आप विभिन्न प्रकार की वस्तुओं (उदाहरण के लिए,[1,'e', [3]]
) की सूचियां प्राप्त कर सकते हैं, आप रिकर्सिव सूचियां प्राप्त कर सकते हैं ... और आप सूचियों को टुकड़ा कर सकते हैं, जिसका अर्थ है केवल कुछ वस्तुओं के साथ एक नई सूची प्राप्त करना।slice
a[start:stop:step]
रूप में विस्तारित स्लाइसिंग को संभालने के लिए "दृश्यों के पीछे" ऑब्जेक्ट प्रकार का उपयोग किया जाता है,help(slice)
बताता है।
"अनुक्रम" एक वस्तु नहीं है, एक अनौपचारिक इंटरफेस की तरह कुछ वस्तुओं जैसे list
लागू करें।
पायथन डेवलपर्स अन्यथा सोचते हैं: ['सूची': एक अंतर्निहित पायथन अनुक्रम। इसके नाम के बावजूद यह एक लिंक्ड सूची की तुलना में अन्य भाषाओं में एक सरणी के समान है क्योंकि तत्वों तक पहुंच 'ओ (1) '।] है (http://docs.python.org/py3k/glossary.html#term- सूची) – SilentGhost
शायद बेहतर सी ++ समानता std :: वेक्टर है, हेटरोजेनस को छोड़कर। –
सूचियों, एक दृश्य प्रकार के होते हैं एक सरणी
अनुक्रम प्रकार एक कार्यात्मक सुपरसेट वर्णन करने के लिए इसी तरह की:
छह अनुक्रम प्रकार के होते हैं यूनिकोड तार, सूचियां, tuples, बफर, और xrange वस्तुओं।
- स्लाइस (या सबस्ट्रिंग भी) subarrays के लिए एक अंकन कर रहे हैं
और पढ़ें ... http://docs.python.org/glossary.html
सच पूछिये तो, एक टुकड़ा एक प्रकार है जो सूचकांक की एक श्रृंखला का प्रतिनिधित्व करता है, उदाहरण के लिए एक शुरुआत, रुको, और एक कदम। एक टुकड़ा बिल्कुल एक कंटेनर प्रकार नहीं है। आप एक सूची को इंडेक्स करने के लिए एक टुकड़ा का उपयोग कर सकते हैं, जिसके परिणामस्वरूप एक नई सूची जो मूल सूची के एक उपन्यास की एक प्रति है।
सूचियां सी ++ सरणी से भिन्न होती हैं जिसमें वे विषम होते हैं; तत्वों को एक ही प्रकार के होने की आवश्यकता नहीं है। और जैसा कि MYYN ने पहले ही बताया है, "अनुक्रम" एक पाइथन प्रकार नहीं है बल्कि विभिन्न प्रकार के अंतर्निहित प्रकारों का विवरण है।
एक सूची एक अनुक्रम है लेकिन एक अनुक्रम आवश्यक रूप से एक सूची नहीं है। अनुक्रम किसी भी प्रकार का है जो अनुक्रम इंटरफ़ेस ("प्रोटोकॉल") का समर्थन करता है। यह सख्त विरासत पदानुक्रम के बजाय बतख-टाइपिंग द्वारा किया जाता है। ध्यान दें कि अनुक्रम कंटेनर हैं, लेकिन कंटेनर जरूरी अनुक्रम नहीं हैं। (अनुक्रम, अच्छी तरह से अनुक्रमिक हैं!)
देखें http://docs.python.org/library/stdtypes.html#sequence-types-str-unicode-list-tuple-buffer-xrange
स्लाइस वस्तुओं आम तौर पर परोक्ष वाक्यात्मक चीनी (foo[2:5]
) और के माध्यम से बनाई गई हैं इस तरह के __getitem__
के रूप में कंटेनर प्रकार विशेष तरीकों() जो आप ओवरराइड कर सकते हैं करने के लिए प्रदान की है। आम तौर पर आपको स्लाइस से निपटने की ज़रूरत नहीं है जबतक कि आप अपने स्वयं के अनुक्रम/कंटेनर नहीं बनाते।
देखें http://docs.python.org/reference/datamodel.html#specialnames
सूचियाँ सरणियों के बराबर हैं। मैं निश्चित नहीं हूं, लेकिन मुझे लगता है कि इसे गतिशील रूप से विस्तारित सरणी के रूप में सीपीथन में कार्यान्वित किया गया है। हालांकि, इंटरफ़ेस इसे बनाता है ताकि यह केवल एक सादे पुरानी सरणी की तुलना में सी ++ एसटीएल वेक्टर की तरह हो।
आप अपने सवाल में बहुत अलग बातें मिश्रण कर रहे हैं, तो मैं बस एक अलग प्रश्न ;-P
जवाब देंगे अब आप के बारे में अजगर में सबसे महत्वपूर्ण इंटरफेस में से एक पूछ रहे हैं: iterable
- यह मूल रूप से कुछ भी है आप for elem in iterable
जैसे उपयोग कर सकते हैं।
iterable
में तीन वंशज हैं: sequence
, generator
और mapping
।
एक अनुक्रम रैंडम एक्सेस के साथ एक iterable है। आप इससे पहले आइटमों का उपभोग किए बिना अनुक्रम के किसी भी आइटम के लिए पूछ सकते हैं। इस संपत्ति के साथ आप
slices
बना सकते हैं, जो आपको एक से अधिक तत्व प्रदान करता है। एक टुकड़ा आपको बाद में दे सकता है:seq[from:until]
और प्रत्येक nth आइटम:seq[from:until:nth]
।list
,tuple
औरstr
सभी अनुक्रम हैं।यदि प्रवेश पूर्णांक स्थितियों की बजाय कुंजी के माध्यम से किया जाता है, तो आपके पास मैपिंग है।
dict
मूल मैपिंग है।सबसे बुनियादी पुनरावृत्त जनरेटर है। यह कोई यादृच्छिक अभिगम का समर्थन नहीं करता है और इसलिए कोई टुकड़ा नहीं करता है। आपको दिए गए क्रम में सभी वस्तुओं का उपभोग करना होगा। जनरेटर आम तौर पर केवल तभी आइटम बनाते हैं जब आप उन्हें फिर से करते हैं।
generators
बनाने का सामान्य तरीका जनरेटर अभिव्यक्तियां हैं। वे गोल ब्रैकेट को छोड़कर सूची समझ की तरह दिखते हैं, उदाहरण के लिए(f(x) for x in y)
।yield
कीवर्ड का उपयोग करने वाले फ़ंक्शन को कॉल करने से जनरेटर भी लौटाता है।
आम एडाप्टर सभी iterables को इटरेटर है। iterators
में एक ही इंटरफेस है जो वे सबसे बुनियादी प्रकार का समर्थन करते हैं, generator
। वे iter
को एक पुनरावर्तनीय पर कॉल करके स्पष्ट रूप से बनाए जाते हैं और सभी प्रकार के लूपिंग संरचनाओं में अंतर्निहित रूप से उपयोग किए जाते हैं।
मुझे इस उत्तर में जनरेटर का उल्लेख पसंद है। "आलसी" और "अनंत" के बारे में सोचें। – Donald
- 1. <? Php और <के बीच अंतर?
- 2. एएसपी.Net में, <% = और <% #
- 3. एएसपीएक्स में <%: और <% = और <% # के बीच क्या अंतर है?
- 4. क्या स्ट्रीम के बीच का अंतर "<<" और लिखें
- 5. <acronym> और <abbr> के बीच अंतर?
- 6. <%# %> और <%= %> के बीच क्या अंतर है?
- 7. <% # और <% = उद्घाटन टैग के बीच क्या अंतर है?
- 8. <string> और <string.h> के बीच अंतर?
- 9. <asp:table> और <table> के बीच अंतर?
- 10. अंतर <> और =
- 11. सूची <T> और सूची <object> के बीच अंतर?
- 12. <%! %> और <% %>
- 13. cout << cout और cout << और cout में C++ के बीच क्या अंतर है?
- 14. क्या सी # में सूची <> और शब्दकोश <> के बीच अंतर है
- 15. अंतर << a_value
- 16. सूची <string> और आईनेमेरेबल <String> के बीच क्या अंतर है?
- 17. .CreateObjectSet <T>, .Set <T>, और .reateQuery <T> के बीच अंतर।
- 18. @ (पॉज क्लर्क) के बीच अंतर; एक <= 1'b1; और @ (पॉज क्लर्क) एक <= 1'b1;
- 19. आर में `=` और `<-` के बीच क्या अंतर है?
- 20. रुबी में <=> और == के बीच अंतर?
- 21. सूची <Object> और सूची <?>
- 22. कार्य <> और IAsyncOperation <>
- 23. @OneToMany सूची <> बनाम सेट <> अंतर
- 24. सूची <T> और आईनेमेरेबल <T>
- 25. एएसपी.नेट एमवीसी में <% # और <% = के बीच क्या अंतर है?
- 26. रेल्स erb में <% code %> और <%= code %> के बीच क्या अंतर है?
- 27. <?> और <के बीच क्या अंतर है? जावा जेनरिक में ऑब्जेक्ट> बढ़ाता है?
- 28. ASP.NET में <% # बाइंड ("")%> और <% # Eval ("")%> के बीच क्या अंतर है?
- 29. <C-C> और vim में <C-[> के बीच क्या अंतर है?
- 30. एएसपी.नेट एमवीसी में <%: और <% = के बीच क्या अंतर है?
पायथन [दस्तावेज़ों में परिभाषाएं हैं] (http://docs.python.org/glossary.html)। – SilentGhost