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

पायथन में हीप क्यू (heapq) क्या है?


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

हीप बनाना

हीप क्यू को पायथन के इनबिल्ट लाइब्रेरी heapq का उपयोग करके बनाया जाता है। इस लाइब्रेरी में हीप डेटा संरचना पर विभिन्न ऑपरेशन करने के लिए प्रासंगिक फ़ंक्शन होते हैं। नीचे इन फ़ंक्शन्स की सूची दी गई है:

  • heapify – यह फ़ंक्शन एक सामान्य लिस्ट को हीप में बदल देता है। परिणामी हीप में सबसे छोटा एलिमेंट इंडेक्स पोजीशन 0 पर आ जाता है। लेकिन बाकी डेटा एलिमेंट्स जरूरी नहीं कि सॉर्टेड हों।
  • heappush – यह फ़ंक्शन करंट हीप को बदले बिना हीप में एक एलिमेंट जोड़ता है।
  • heappop – यह फ़ंक्शन हीप से सबसे छोटा डेटा एलिमेंट वापस करता है।
  • heapreplace – यह फ़ंक्शन सबसे छोटे डेटा एलिमेंट को फ़ंक्शन में दिए गए नए मान से बदल देता है।

हीप का निर्माण

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

उदाहरण

import heapq
H = [21, 1, 45, 78, 3, 5]
# एलिमेंट्स को पुनर्व्यवस्थित करने के लिए heapify का उपयोग करें
heapq.heapify(H)
print(H)

आउटपुट

उपरोक्त कोड निष्पादित होने पर निम्न परिणाम देता है:

[1, 3, 5, 78, 21, 45]

हीप में इन्सर्ट करना

हीप में डेटा एलिमेंट इन्सर्ट करने पर वह हमेशा लास्ट इंडेक्स पर जुड़ता है। लेकिन आप heapify फ़ंक्शन को फिर से लागू करके नए जोड़े गए एलिमेंट को पहली इंडेक्स पर ला सकते हैं, बशर्ते वह वैल्यू में सबसे छोटा हो। नीचे दिए गए उदाहरण में हम संख्या 8 इन्सर्ट करते हैं।

उदाहरण

import heapq
H = [21, 1, 45, 78, 3, 5]
# हीप में बदलें
heapq.heapify(H)
print(H)
# एलिमेंट जोड़ें
heapq.heappush(H, 8)
print(H)

आउटपुट

उपरोक्त कोड निष्पादित होने पर निम्न परिणाम देता है:

[1, 3, 5, 78, 21, 45]
[1, 3, 5, 78, 21, 45, 8]

हीप से हटाना

आप heappop फ़ंक्शन का उपयोग करके पहली इंडेक्स पर मौजूद एलिमेंट को हटा सकते हैं। नीचे दिए गए उदाहरण में यह फ़ंक्शन हमेशा इंडेक्स पोजीशन 0 पर मौजूद एलिमेंट को हटाता है।

उदाहरण

import heapq
H = [21, 1, 45, 78, 3, 5]
# हीप बनाएं
heapq.heapify(H)
print(H)
# हीप से एलिमेंट हटाएं
heapq.heappop(H)
print(H)

आउटपुट

उपरोक्त कोड निष्पादित होने पर निम्न परिणाम देता है:

[1, 3, 5, 78, 21, 45]
[3, 21, 5, 78, 45]

हीप में रिप्लेस करना

heapreplace फ़ंक्शन हमेशा हीप के सबसे छोटे एलिमेंट को हटाता है और नए आने वाले एलिमेंट को किसी ऐसे स्थान पर इन्सर्ट करता है जो किसी क्रम से निर्धारित नहीं होता।

उदाहरण

import heapq
H = [21, 1, 45, 78, 3, 5]
# हीप बनाएं
heapq.heapify(H)
print(H)
# एक एलिमेंट रिप्लेस करें
heapq.heapreplace(H, 6)
print(H)

आउटपुट

उपरोक्त कोड निष्पादित होने पर निम्न परिणाम देता है:

[1, 3, 5, 78, 21, 45]
[3, 6, 5, 78, 21, 45]
  1. पायथन में CGI क्या है? पायथन में CGI क्या है?

    कॉमन गेटवे इंटरफ़ेस, या CGI, HTTP सर्वर जैसे सूचना सर्वरों के साथ इंटरफ़ेस करने के लिए बाहरी गेटवे प्रोग्राम्स के लिए एक मानक है।वर्तमान संस्करण CGI/1.1 है और CGI/1.2 प्रगति पर है।वेब ब्राउज़िंगCGI की अवधारणा को समझने के लिए, आइए देखें कि जब हम किसी विशेष वेब पेज या URL को ब्राउज़ करने के लिए एक हाइ

  1. - Python में is not ऑपरेटर क्या है?

    Python में `is not` मेंबरशिप ऑपरेटर false मूल्यांकन करता है यदि ऑपरेटर के दोनों तरफ के वेरिएबल्स एक ही ऑब्जेक्ट की ओर इशारा करते हैं और अन्यथा true। उदाहरण के लिए: >>> a = 10 >>> b = 20 >>> id(a), id(b) (1581561184, 1581561504) >>> a is not b True चूंकि वेरिएबल्स

  1. - पायथन में __init__.py क्या है?

    __init__.py फ़ाइलें पायथन को डायरेक्टरी को पैकेज के रूप में मानने के लिए आवश्यक होती हैं। यह string जैसे सामान्य नाम वाली डायरेक्टरी को, बाद में मॉड्यूल सर्च पथ पर आने वाले वैध मॉड्यूल को अनजाने में छिपाने से रोकती है। सबसे सरल मामले में, __init__.py एक खाली फ़ाइल हो सकती है, लेकिन यह पैकेज के लिए