पायथन प्राथमिकता कतार

| | | | | | | | | | | | | | | | | | | | | | | | | | | |

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

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

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

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

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

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

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

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

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

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

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

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

प्राथमिकता कतार प्लेट:. Queue.PriorityQueue

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

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

हमारा कोड रिटर्न:

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

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

queue.PriorityQueue विधि प्रभावी और उपयोग में आसान है, जिससे आपको आवश्यकता पड़ने पर यह एक उत्कृष्ट विकल्प बन जाता है। प्राथमिकता प्रतीक्षा की एक कतार बनाने के लिए। एक हेपैक डेटा संरचना प्राथमिकता के क्रम में वस्तुओं को हटा देती है। सबसे कम मान की प्राथमिकता सबसे कम होती है और उच्चतम मान की हीपक संरचना में सर्वोच्च प्राथमिकता होती है

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

या तो हमारे पिछले उदाहरण पर जाएं। मान लीजिए कि हम एक संगीत कार्यक्रम में टिकट धारकों के बारे में जानकारी संग्रहीत करने के लिए एक प्राथमिकता कतार बनाना चाहते हैं। फिर हम हेपक्यू मॉड्यूल और इस प्रोग्राम का उपयोग करके ऐसा कर सकते हैं: टिकट_धारक, (3, `पॉल`)) हीपक.हेपपुश (टिकट_धारक, (1, `मील`)) हीपक.हेपुश (टिकट_धारक, (2, दानी`)), जबकि टिकट_धारक: आइटम = हीपक.हीपॉप (टिकट_धारक) प्रिंट (बिंदु)

हमारा कोड रिटर्न:

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

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

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

तकनीकी रूप से आप < का उपयोग करके एक प्राथमिकता कतार बना सकते हैं a href="/python-network/">पायथन सूची डेटा संरचना। ऐसा करने के लिए, आपको एक सूची बनानी होगी, फिर उन्हें आरोही क्रम में क्रमबद्ध करना होगा।

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

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

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

हमारा कोड रिटर्न:

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

हमने एक लॉन्ग टाइम लूप बनाया है जो प्रत्येक आइटम के माध्यम से जाता है टिकट धारकों की सूची और सूची में सबसे ऊपर आइटम। फिर हमारा कोड हटाए गए आइटम को कंसोल पर प्रिंट करता है।

निष्कर्ष

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

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

पायथन सीखने की अधिक युक्तियों के लिए, हमारी Python Learning Guide देखें < /ए>.