Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन प्राथमिकता कतार:एक गाइड

पायथन प्राथमिकता कतार:एक गाइड

पायथन प्राथमिकता कतार डेटा को एक विशेष क्रम में संग्रहीत करती है। पायथन में प्राथमिकता कतार को लागू करने के दो तरीके हैं:कतार वर्ग का उपयोग करना और हीपक मॉड्यूल का उपयोग करना।

आप सूची में प्रत्येक आइटम के मूल्यों के आधार पर डेटा ऑर्डर करना चाह सकते हैं। उदाहरण के लिए, हो सकता है कि आप सूची में सबसे पहले उच्चतम मान और सूची में सबसे कम मान को अंतिम रूप देना चाहते हों।

यही वह जगह है जहां प्राथमिकता कतार आती है। प्राथमिकता कतार एक डेटा संरचना है जो आरोही क्रम में अपनी चाबियों के मूल्य के आधार पर डेटा संग्रहीत करती है। यह आपको कतार में सबसे छोटे और सबसे बड़े मान तक आसानी से पहुंचने की अनुमति देता है।

यह ट्यूटोरियल चर्चा करेगा कि आपको प्राथमिकता क्यू बनाने के लिए सूची का उपयोग क्यों नहीं करना चाहिए। हम आपको दो और कुशल तरीके दिखाएंगे जिनका उपयोग आप पायथन प्राथमिकता कतार बनाने के लिए कर सकते हैं।

पायथन प्राथमिकता कतार क्या है?

प्राथमिकता कतार एक कतार का एक संशोधित संस्करण है जो डेटा को इस क्रम में संग्रहीत करता है कि किस तत्व की सर्वोच्च प्राथमिकता है। प्राथमिकता कतार में प्रत्येक तत्व की प्राथमिकता तत्व के मूल्य के आधार पर तय की जाती है।

कंप्यूटर विज्ञान में, क्यू डेटा संरचनाएं हैं जो वस्तुओं को पहले-पहले, पहले-आउट (फीफो) क्रम में संग्रहीत करती हैं। ऐसे कुछ परिदृश्य हैं जहां इस संरचना का उपयोग करना सहायक हो सकता है।

उदाहरण के लिए, मान लीजिए कि आप किसी रेस्तरां के लिए ऑर्डर ट्रैकिंग ऐप बना रहे हैं। जो व्यक्ति पहले आदेश देता है उसे उन लोगों के सामने सेवा दी जानी चाहिए जो अपना आदेश आगे रखते हैं। आदेशों पर नज़र रखने के लिए, आप एक कतार का उपयोग करना चाहेंगे।

पायथन में प्राथमिकता कतार को परिभाषित करने के दो तरीके हैं:

81% प्रतिभागियों ने कहा कि बूटकैंप में भाग लेने के बाद उन्हें अपनी तकनीकी नौकरी की संभावनाओं के बारे में अधिक आत्मविश्वास महसूस हुआ। आज ही एक बूटकैंप से मिलान करें।

बूटकैंप शुरू करने से लेकर अपनी पहली नौकरी खोजने तक, औसत बूटकैंप ग्रेड ने करियर संक्रमण में छह महीने से भी कम समय बिताया।

  • प्राथमिकता कतार कतार वर्ग का उपयोग करना
  • heapq मॉड्यूल का उपयोग करना

आप सूची संरचना का उपयोग करके प्राथमिकता कतार को परिभाषित कर सकते हैं। लेकिन, यह रणनीति प्रायोरिटी क्यू क्यू क्लास या हीप मॉड्यूल का उपयोग करने की तुलना में कम कुशल है।

प्राथमिकता कतार पायथन:queue.PriorityQueue

कतार.प्राथमिकता कतार वर्ग एक पायथन प्राथमिकता कतार बनाता है। यह वर्ग पायथन कतार पुस्तकालय का हिस्सा है। इस वर्ग का उपयोग करने के लिए आपको कतार पुस्तकालय आयात करने की आवश्यकता है। प्रायोरिटी क्यू से किसी आइटम को पुनः प्राप्त करने के लिए, आप प्राप्त () विधि का उपयोग कर सकते हैं।

प्रायोरिटी क्यू वर्ग तक पहुँचने के लिए, हमें इसे अपने कोड में आयात करना होगा, जिसे हम इस पायथन आयात विवरण का उपयोग करके कर सकते हैं:

क्यू इंपोर्ट प्रायोरिटीक्यू से

मान लीजिए कि हम स्थानीय संगीत कार्यक्रम में टिकट धारकों के लिए प्राथमिकता कतार बनाना चाहते हैं। हम इस कोड का उपयोग करके ऐसा कर सकते हैं:

क्यू इंपोर्ट से प्रायोरिटीक्यूयूटिकेट_होल्डर्स =प्रायोरिटी क्यूई () टिकट_होल्डर्स। .खाली ():आइटम =टिकट_धारक। प्राप्त () प्रिंट (आइटम)

हमारा कोड लौटाता है:

(1, 'माइल्स')(2, 'दानी')(3, 'पॉल')

हमारे कोड में, हम सबसे पहले प्रायोरिटी क्यू वर्ग को कतार . से आयात करते हैं पुस्तकालय, फिर हम ticket_holders . नामक एक प्राथमिकता कतार प्रारंभ करते हैं . इसके बाद, हम अपनी प्राथमिकता कतार में तीन टुपल्स डालते हैं, जो टिकट संख्या और टिकट से जुड़े नामों को संग्रहीत करते हैं।

हम ticket_holders . में प्रत्येक आइटम को चलाने के लिए पायथन जबकि लूप का उपयोग करते हैं प्राथमिकता कतार। फिर, हम get() . का उपयोग करके उस आइटम को पुनः प्राप्त करते हैं ।

कतार.प्राथमिकता कतार विधि कुशल और उपयोग में आसान है, जो इसे प्राथमिकता कतार बनाने के लिए एक बढ़िया विकल्प बनाती है।

प्राथमिकता कतार पायथन हेपैक मॉड्यूल

हेपैक मॉड्यूल आपको पायथन प्राथमिकता कतार को परिभाषित करने देता है। एक हीपैक डेटा संरचना वस्तुओं को उनकी प्राथमिकता के क्रम में हटा देती है। सबसे कम मान की प्राथमिकता सबसे कम होती है और heapq संरचना में उसके उच्चतम मूल्य की सर्वोच्च प्राथमिकता होती है।

इससे पहले कि हम heapq मॉड्यूल का उपयोग कर सकें, हमें पहले इसे निम्नलिखित आयात विवरण का उपयोग करके अपने कोड में आयात करना होगा:

ढेर आयात करें

आइए अपने पहले के उदाहरण पर वापस आते हैं। मान लीजिए कि हम एक संगीत कार्यक्रम में टिकट धारकों के बारे में जानकारी संग्रहीत करने के लिए एक प्राथमिकता कतार बनाना चाहते हैं। हम ऐसा heapq मॉड्यूल और इस प्रोग्राम का उपयोग करके कर सकते हैं:

<पूर्व>आयात heapqticket_holders =[]heapq.heappush(ticket_holders, (3, 'पॉल')) heapq.heappush(ticket_holders, (1, 'माइल्स')) heapq.heappush(ticket_holders, (2, 'दानी')) जबकि टिकट धारक:आइटम =heapq.heappop(ticket_holders) प्रिंट (आइटम)

हमारा कोड लौटाता है:

(1, 'माइल्स')(2, 'दानी')(3, 'पॉल')

सबसे पहले, हमने हेपैक लाइब्रेरी को इंपोर्ट किया, और फिर हमने ticket_holders नामक एक पायथन वेरिएबल को इनिशियलाइज़ किया। . हमने heappush() . का इस्तेमाल किया तीन टुपल्स को हमारी प्राथमिकता कतार में धकेलने की विधि। यह कतार प्रत्येक टिकट धारक के टिकट नंबर और प्रत्येक टिकट धारक के नाम को संग्रहीत करती है।

फिर हमने थोड़ी देर का लूप बनाया जो हमारी प्राथमिकता कतार में प्रत्येक आइटम के माध्यम से लूप करता है। यह लूप heappop() . का उपयोग करके कतार के शीर्ष पर स्थित आइटम को हटा देता है . फिर, हटाए गए आइटम को कंसोल पर मुद्रित किया जाता है। जैसा कि आप देख सकते हैं, हमारी कतार में सभी आइटम उनकी प्राथमिकता के क्रम में मुद्रित होते हैं।

आपको सूची क्यों नहीं रखनी चाहिए

तकनीकी रूप से, आप पायथन सूची डेटा संरचना का उपयोग करके एक प्राथमिकता कतार बना सकते हैं। ऐसा करने के लिए, आप एक सूची बनाएंगे, फिर उसे आरोही क्रम में क्रमित करेंगे।

हालांकि, यह प्राथमिकता कतार बनाए रखने का एक अपेक्षाकृत अक्षम तरीका है। जैसे ही आप सूची में आइटम बदलते हैं, आपको सूची को फिर से क्रमित करना होगा, जिसमें समय लगता है।

यदि आपको केवल कुछ मानों को संग्रहीत करने की आवश्यकता है, तो आप एक पारंपरिक सूची को प्राथमिकता कतार के रूप में उपयोग कर सकते हैं। लेकिन, यदि आप एक बड़ी कतार बनाना चाहते हैं, तो सूचियाँ एक अच्छा विकल्प नहीं हैं।

संदर्भ के लिए, सूचियों का उपयोग करके प्राथमिकता कतार के उदाहरण पर चलते हैं। मान लीजिए कि हम एक प्राथमिकता कतार बनाना चाहते हैं जो टिकट धारकों के आदेश को संग्रहीत करती है जिन्हें पहले एक संगीत कार्यक्रम में जाने दिया जाना चाहिए। इस कतार को बनाने के लिए हम निम्नलिखित कोड का उपयोग कर सकते हैं:

ticket_holders =[]ticket_holders.append((3, 'Paul'))ticket_holders.append((1, 'miles'))ticket_holders.append((2, 'Dani'))ticket_holders.sort(reverse=True) )जबकि टिकट_धारक:आइटम =टिकट_धारक.पॉप () प्रिंट (आइटम)

हमारा कोड लौटाता है:

(1, 'माइल्स')(2, 'दानी')(3, 'पॉल')

हमने ticket_holders . नाम से एक सूची बनाई है , फिर हमने सूची में तीन टुपल्स जोड़े। प्रत्येक टपल में टिकट धारक की टिकट संख्या और उनका नाम होता है। फिर, हमने पायथन सॉर्ट () . का इस्तेमाल किया टिकट धारकों की हमारी सूची को उल्टे क्रम में क्रमबद्ध करने के लिए कार्य करता है।

हमने कुछ समय का लूप बनाया है जो ticket_holders . में हर आइटम के माध्यम से पुनरावृत्त होता है सूची और सूची के शीर्ष पर आइटम। फिर, हमारा कोड हटाए गए आइटम को कंसोल पर प्रिंट करता है।

निष्कर्ष

प्राथमिकता कतार बनाने के लिए दो सबसे आम हैं हीपक मॉड्यूल या queue.PriorityQueue का उपयोग करना कक्षा। जबकि आप तकनीकी रूप से एक सूची को प्राथमिकता कतार के रूप में उपयोग कर सकते हैं, यह दृष्टिकोण अच्छी तरह से स्केल नहीं करता है।

इस ट्यूटोरियल ने उदाहरणों के संदर्भ में चर्चा की कि पायथन में प्राथमिकता कतार कैसे बनाई जाए। अब आप पाइथन पेशेवर की तरह अपनी प्राथमिकता वाली कतारें बनाना शुरू करने के लिए आवश्यक ज्ञान से लैस हैं!

पायथन सीखने के तरीके के बारे में अधिक मार्गदर्शन के लिए, हमारी संपूर्ण हाउ टू लर्न पायथन गाइड देखें।


  1. पायथन में प्राथमिकता कतार कैसे लागू करें?

    परिचय... क्यू मॉड्यूल मल्टी-थ्रेडेड प्रोग्रामिंग के लिए उपयुक्त फर्स्ट-इन, फर्स्ट-आउट (फीफो), लास्ट-इन, फर्स्ट आउट (एलआईएफओ) डेटा संरचना प्रदान करता है। डेटा या किसी भी विस्तृत जानकारी को पास करने के लिए कतारों का उपयोग किया जा सकता है उदा। सत्र विवरण, पथ, चर, निर्माता और उपभोक्ता धागे के बीच सुरक्

  1. पायथन में बहुप्रचारित प्राथमिकता कतार

    क्यू मॉड्यूल आपको एक नई क्यू ऑब्जेक्ट बनाने की अनुमति देता है जो विशिष्ट संख्या में आइटम रख सकता है। कतार को नियंत्रित करने के लिए निम्नलिखित तरीके हैं - प्राप्त करें () - get() कतार से किसी आइटम को हटाता है और लौटाता है। डालें () - पुट आइटम को क्यू में जोड़ता है। qsize() − qsize() उन आइटमों की संख

  1. पायथन में ढेर कतार (या ढेर)

    हीप कतार एक विशेष वृक्ष संरचना है जिसमें प्रत्येक मूल नोड अपने बच्चे के नोड से कम या उसके बराबर होता है। पायथन में इसे हेपैक मॉड्यूल का उपयोग करके कार्यान्वित किया जाता है। प्राथमिकता कतारों को लागू करना बहुत उपयोगी है जहां उच्च वजन वाले कतार आइटम को प्रसंस्करण में अधिक प्राथमिकता दी जाती है। एक ढेर