Depset

यह एक खास डेटा स्ट्रक्चर है, जो बेहतर मर्ज ऑपरेशन की सुविधा देता है. साथ ही, इसके ट्रैवर्सल ऑर्डर को तय किया जाता है. आम तौर पर, इसका इस्तेमाल, नियमों और पहलुओं में ट्रांज़िटिव डिपेंडेंसी से डेटा इकट्ठा करने के लिए किया जाता है. ज़्यादा जानकारी के लिए यहां देखें.

डिप्सेट के एलिमेंट हैश किए जा सकने वाले होने चाहिए और उनका टाइप (जैसा कि बिल्ट-इन टाइप(x) फ़ंक्शन में बताया गया है) एक जैसा होना चाहिए. हालांकि, डेपसेट सिर्फ़ हैश सेट नहीं हैं और वे पैसे चुकाकर ली जाने वाली सदस्यता की तेज़ी से जांच करने की सुविधा भी नहीं देते. अगर आपको किसी सामान्य सेट डेटा टाइप की ज़रूरत है, तो डिक्शनरी का इस्तेमाल करके किसी डेटा टाइप को सिम्युलेट किया जा सकता है. यहां सभी बटन True से मैप होते हैं.

डेपसेट में बदलाव नहीं किया जा सकता. इन्हें उनके कंस्ट्रक्टर फ़ंक्शन का इस्तेमाल करके बनाया जाना चाहिए. साथ ही, transitive आर्ग्युमेंट के ज़रिए दूसरे डिवाइसों के साथ मर्ज या ऑगमेंटेड करना चाहिए.

order पैरामीटर से यह तय होता है कि किस तरह का ट्रैवर्सल है, जो डिप्सेट को बार-बार दोहराए जाने वाले में बदलता है. इसके चार संभावित मान हो सकते हैं:

  • "default" (पहले "stable" था): ऑर्डर की जानकारी नहीं दी गई है, लेकिन यह तय किया गया है कि ऑर्डर के मुताबिक ही ऑर्डर किया जा सकता है.
  • "postorder" (पहले "compile" था): ऑर्डर करने के बाद, बाएं से दाएं के क्रम में. इस तरीके से, सबसे बाईं ओर पहले और फिर सीधे तौर पर बाईं ओर मौजूद बच्चों को सबसे पहले दिखाया जाता है.
  • "preorder" (पहले "naive_link" था): बाएं से दाएं पहले से ऑर्डर करने की सुविधा. यह बिलकुल बाईं ओर के पहले एलिमेंट से मिलता है. इसके बाद, सबसे बाईं तरफ़ वाले बच्चों को बार-बार देखता है.
  • "topological" (पहले "link" था): मूल जड़ से लेकर पत्तियों तक एक टोपोलॉजील ऑर्डर. बाईं-से-दाईं ओर कोई गारंटी नहीं है.

दो डेपसेट सिर्फ़ तब मर्ज किए जा सकते हैं, जब दोनों में से किसी एक का क्रम एक जैसा हो या किसी एक में "default" का क्रम हो. बाद के मामले में, नतीजे वाले डिप्सेट का क्रम दूसरे ऑर्डर के जैसा ही होगा.

हटाए गए वैल्यू में डुप्लीकेट वैल्यू हो सकती हैं. हालांकि, to_list() का इस्तेमाल करके, दोहराए जाने वाले वैल्यू को रोक दिया जाएगा. डुप्लीकेट लिंक, क्रम के सिमेंटिक्स में रुकावट डाल सकते हैं.

सदस्य

to_list

list depset.to_list()

डिप्सेट के ट्रैवर्सल ऑर्डर में, डुप्लीकेट के बिना एलिमेंट की सूची लौटाता है. ध्यान दें कि उन एलिमेंट के लिए क्रम तय नहीं किया गया है (लेकिन तय नहीं है) जिन्हें डेप्सेट में एक से ज़्यादा बार जोड़ा गया है. यह "default" के ऑर्डर किए गए डिप्सेट के लिए भी तय नहीं किया गया है. इसके अलावा, उन चाइल्ड डेपसेट के लिए भी नहीं बताया गया है जिनका ऑर्डर पैरंट डेसेट से अलग है. यह सूची एक कॉपी है; इसे बदलने से डिप्सेट पर कोई असर नहीं पड़ता और डिप्सेट पर इसका कोई असर नहीं पड़ता.