Depset

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

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

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

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

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

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

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

पैसे चुकाकर बने सदस्य

to_list

list depset.to_list()

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