पायथन में सेट और सूचियों के बीच एकमात्र अंतर यह तथ्य है कि आप दो सेटों की तुलना करने के लिए यूनियन, अंतरण, अंतर, सममित अंतर फ़ंक्शंस का उपयोग कर सकते हैं? इन कार्यों को सूचियों पर क्यों लागू नहीं किया जा सकता है? सूचियों की तुलना में कौन सी परिस्थितियां सेट अधिक उपयोगी होती हैं?पायथन में सेट और सूचियों के बीच क्या अंतर है?
उत्तर
एक बड़ा अंतर है।
- सेट डुप्लिकेट नहीं हो सकते
- सेट अव्यवस्थित
- आदेश एक सेट में एक तत्व खोजने के लिए, एक हैश देखने प्रयोग किया जाता है (जिसके कारण सेट अव्यवस्थित हैं)। यह
__contains__
(in
ऑपरेटर) सूचियों से सेट के लिए बहुत अधिक कुशल बनाता है। - सेट में केवल हैशबल आइटम हो सकते हैं (देखें # 3)। यदि आप कोशिश करते हैं:
set(([1],[2]))
आपकोTypeError
मिल जाएगा।
व्यावहारिक अनुप्रयोगों में, सूचियों को क्रमबद्ध करने के लिए बहुत अच्छा होता है और ऑर्डर होता है जबकि सेट डुप्लिकेट नहीं चाहते हैं और ऑर्डर की परवाह नहीं करते हैं।
यह भी ध्यान रखें कि यदि आप, आदि के क्रम के बारे में परवाह नहीं है, आप
new_set = myset.intersection(mylist)
उपयोग कर सकते हैं एक set
और एक list
के बीच चौराहे मिलता है।
sets
- अद्वितीय तत्व
lists
की अक्रमित संग्रह - तत्वों के संग्रह का आदेश दिया
sets
आप संचालन करने की अनुमति देता ऐसी intersection
, union
, difference
, और symmetric difference
, गणित के सेट सिद्धांत की यानी आपरेशन के रूप में। सेट इंडेक्सिंग की अनुमति नहीं देता है और हैश टेबल पर लागू किया जाता है।
lists
वास्तव में चर-लंबाई वाली सरणी हैं, लिस्पी-स्टाइल लिंक्ड सूचियों नहीं। सूचियों में तत्वों को इंडेक्स द्वारा एक्सेस किया जाता है।
कुछ और अंतर हैं:
- सूची 2-डी हो सकता है एक सेट जबकि नहीं कर सकता।
- सूची के अनुसार आदेश दिया गया है (आईई। सीरियल नंबर है) सूची निष्पादित करने के लिए अपेक्षाकृत धीमी है जबकि सेट तेज़ हैं।
- पायथन में सूची जावा या सी के ऐरे की तरह है।
- एक सेट प्रिंट करना लगभग हमेशा उत्पादन के विभिन्न अनुक्रम प्रदान करता है।
एक सेट जितना समय तक आप चाहते हैं उतने आयामों का हो सकता है जब तक आप 'फ्रोजनसेट' – Copperfield
सेट विशिष्ट तत्वों के संग्रह का प्रतिनिधित्व करता है।
तेजी से आपरेशन के लिए:: अजगर में, सेट मुख्य रूप से दो कारणों से (: स्क्रैच से डाटा विज्ञान, जोएल Gruce पुस्तक) के लिए उपयोग किया जाता है में सेट पर एक बहुत तेज ऑपरेशन है।यदि हमारे पास तत्वों का एक बड़ा संग्रह है और यदि हम सदस्यता परीक्षण करना चाहते हैं, तो उस स्थिति में सूची के बजाय सेट का उपयोग करना उचित है।
संग्रह में एक अलग आइटम खोजने के लिए। प्रोग्रामर डिक्ट्स और सूचियों की तुलना में बहुत कम बार सेट करते हैं।
अजगर सेट:
सेट अद्वितीय आइटम का एक अव्यवस्थित संग्रह है। सेट को ब्रेसिज़ {} के अंदर अल्पविराम से अलग मूल्यों द्वारा परिभाषित किया जाता है। एक सेट में आइटम का आदेश नहीं दिया जाता है।
सेट अनियंत्रित संग्रह हैं, अनुक्रमण का कोई मतलब नहीं है। इसलिए स्लाइसिंग ऑपरेटर [] काम नहीं करता है।
>>> a = {1,2,2,3,3,3}
>>> a
set([1, 2, 3])
>>> a[1]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'set' object does not support indexing
अजगर सूची:
सूची आइटम के एक आदेश दिया अनुक्रम है। यह पायथन में सबसे अधिक इस्तेमाल किए जाने वाले डेटाटाइप में से एक है और यह बहुत लचीला है। सूची में सभी वस्तुओं को एक ही प्रकार की आवश्यकता नहीं है।
एक सूची घोषित करना काफी सीधे आगे है। अल्पविराम से अलग आइटम ब्रैकेट के भीतर संलग्न होते हैं []।
>>> a = [1, 2.2, 'python']
हम टुकड़ा करने की क्रिया ऑपरेटर [] का उपयोग एक आइटम या एक सूची से आइटम की एक सीमा को निकालने के लिए कर सकते हैं। सूचकांक पायथन में फॉर्म 0 शुरू होता है।
सूचियां उत्परिवर्तनीय हैं, यानी, सूची के तत्वों के मूल्य को बदला जा सकता है।
सेट, परिभाषा के द्वारा, डुप्लिकेट मानों नहीं होते हैं; मुझे लगता है कि पाइथन, अन्य भाषाओं की तरह, सूची में डुप्लिकेट प्रविष्टियों की अनुमति देगा। –
यह दस्तावेज़ीकरण में बहुत अच्छी तरह से रखा गया है। [सेट] (http://docs.python.org/tutorial/datastructures.html#sets) और [सूचियां] (http://docs.python.org/tutorial/datastructures.html#more-on-lists) –