Depset

किसी समस्या की शिकायत करें स्रोत देखें

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

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

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

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

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

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

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

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

to_list

list depset.to_list()

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