गणित में, सेट और ऑर्डर किए गए सेट (ओसेट) हैं।
- सेट : अद्वितीय तत्वों का एक अनियंत्रित कंटेनर (कार्यान्वित)
- ओसेट : अनूठे तत्वों का एक ऑर्डर किया हुआ कंटेनर (NotImplemented)
पायथन में, केवल सेट को सीधे लागू किया जाता है। हम नियमित रूप से निर्धारित कुंजियों ( 3.7+ ) के साथ ओसेट्स का अनुकरण कर सकते हैं ।
दिया हुआ
a = [1, 2, 20, 6, 210, 2, 1]
b = {2, 6}
कोड
oset = dict.fromkeys(a).keys()
# dict_keys([1, 2, 20, 6, 210])
डेमो
प्रतिकृतियां हटा दी जाती हैं, सम्मिलन-क्रम संरक्षित होता है।
list(oset)
# [1, 2, 20, 6, 210]
तानाशाह की चाबियों पर सेट जैसे ऑपरेशन।
oset - b
# {1, 20, 210}
oset | b
# {1, 2, 5, 6, 20, 210}
oset & b
# {2, 6}
oset ^ b
# {1, 5, 20, 210}
विवरण
ध्यान दें: एक अनियंत्रित संरचना आदेशित तत्वों को नहीं छोड़ती है। बल्कि, बनाए रखा आदेश की गारंटी नहीं है। उदाहरण:
assert {1, 2, 3} == {2, 3, 1} # sets (order is ignored)
assert [1, 2, 3] != [2, 3, 1] # lists (order is guaranteed)
यह जानकर प्रसन्नता हो सकती है कि एक सूची और मल्टीसेट (mset) दो और आकर्षक, गणितीय डेटा संरचनाएँ हैं:
- सूची : प्रतिकृति के लिए अनुमति देने वाले तत्वों का एक आदेशित कंटेनर (कार्यान्वित)
- mset : तत्वों का एक अनियंत्रित कंटेनर जो प्रतिकृति की अनुमति देता है (NotImplemented) *
सारांश
Container | Ordered | Unique | Implemented
----------|---------|--------|------------
set | n | y | y
oset | y | y | n
list | y | n | y
mset | n | n | n*
* एक मल्टीसेट परोक्ष रूप से साथ नकल करते किया जा सकता है collections.Counter()
, की मैपिंग dict की तरह multiplicities (मायने रखता है)।