Depset

किसी समस्या की शिकायत करें सोर्स देखें Nightly · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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

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

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

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

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

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

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

सदस्य

to_list

list depset.to_list()

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