Python कतार: FIFO, LIFO उदाहरण

एचएमबी क्या है? Python कतार?

कतार एक कंटेनर है जो डेटा रखता है। जो डेटा पहले दर्ज किया जाता है उसे पहले हटाया जाएगा, और इसलिए कतार को "फर्स्ट इन फर्स्ट आउट" (FIFO) भी कहा जाता है। कतार के दो छोर होते हैं आगे और पीछे। आइटम पीछे से दर्ज किए जाते हैं और सामने की तरफ से निकाले जाते हैं।

कैसे करता है Python कतार में काम?

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

यहाँ कतार का आरेखीय निरूपण है:

Python कतार कार्य

RSI रियर वह बिंदु दर्शाता है जहाँ आइटम कतार के अंदर डाले जाते हैं। इस उदाहरण में, 7 उसका मान है।

RSI सामने वह बिंदु दर्शाता है जहाँ कतार से आइटम हटा दिए जाएँगे। यदि आप कतार से कोई आइटम हटाते हैं, तो आपको मिलने वाला पहला तत्व 1 होगा, जैसा कि चित्र में दिखाया गया है।

आइटम 1 कतार में सबसे पहले डाला गया था, और इसे हटाते समय सबसे पहले बाहर आया। इसलिए कतार को फर्स्ट इन फर्स्ट आउट (FIFO) कहा जाता है

Python कतार कार्य

कतार में, आइटम क्रम में हटाए जाते हैं और बीच से नहीं हटाए जा सकते। आप कतार से आइटम 5 को बेतरतीब ढंग से नहीं हटा सकते, ऐसा करने के लिए आपको 5 से पहले के सभी आइटम हटाने होंगे। कतार में आइटम उसी क्रम में हटाए जाएँगे जिस क्रम में उन्हें डाला गया है।

कतार के प्रकार Python

मुख्यतः दो प्रकार की कतारें होती हैं Python:

  • पहले अंदर पहले बाहर कतार: इसके लिए, जो तत्व पहले जाएगा वह सबसे पहले बाहर आएगा। FIFO के साथ काम करने के लिए, आपको कॉल करना होगा कतार() क्यू मॉड्यूल से क्लास.
  • अंतिम में प्रथम बाहर कतार: यहां पर, जो तत्व अंतिम रूप से प्रविष्ट किया गया है, वह सबसे पहले बाहर आएगा। LIFO के साथ काम करने के लिए, आपको कॉल करना होगा लाइफोक्यू() क्यू मॉड्यूल से क्लास.

Python कतार स्थापना

पायथन में क्यू के साथ काम करना बहुत आसान है। अपने कोड में क्यू का उपयोग करने के लिए यहां दिए गए चरणों का पालन करें।

चरण 1) आपको बस क्यू मॉड्यूल को आयात करना होगा, जैसा कि नीचे दिखाया गया है:

import queue

यह मॉड्यूल डिफ़ॉल्ट रूप से python के साथ उपलब्ध है, और आपको कतार के साथ काम करना शुरू करने के लिए किसी अतिरिक्त इंस्टॉलेशन की आवश्यकता नहीं है। कतार के 2 प्रकार हैं FIFO (पहले अंदर पहले बाहर) और LIFO (अंतिम अंदर पहले बाहर)।

चरण 2) FIFO क्यू के साथ काम करने के लिए, नीचे दिखाए अनुसार आयातित क्यू मॉड्यूल का उपयोग करके क्यू क्लास को कॉल करें:

import queue
q1 = queue.Queue()

चरण 3) LIFO कतार के साथ काम करने के लिए LifoQueue() वर्ग को कॉल करें जैसा कि नीचे दिखाया गया है:

import queue
q1 = queue.LifoQueue()

क्यू और LifoQueue वर्ग के अंदर उपलब्ध विधियाँ

Queue और LifoQueue वर्ग के अंदर उपलब्ध महत्वपूर्ण विधियाँ निम्नलिखित हैं:

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

पहले आओ पहले पाओ कतार का उदाहरण

पहले आओ पहले पाओ की स्थिति में, जो तत्व पहले जाएगा वह सबसे पहले बाहर आएगा।

कतार में कोई आइटम जोड़ें

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

किसी आइटम को जोड़ने के लिए, आप put() विधि का उपयोग कर सकते हैं जैसा कि उदाहरण में दिखाया गया है:

import queue
q1 = queue.Queue()
q1.put(10) #this will additem 10 to the queue.

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

import queue
q1 = queue.Queue(5) #The max size is 5.
q1.put(1)
q1.put(2)
q1.put(3)
q1.put(4)
q1.put(5)
print(q1.full()) # will return true.

आउटपुट:

True

अब कतार का आकार 5 है, और यह 5 से ज़्यादा आइटम नहीं लेगा, और q1.full() विधि true लौटाएगी। कोई और आइटम जोड़ने से कोड आगे निष्पादित नहीं होगा।

कतार से कोई आइटम हटाएँ

कतार से किसी आइटम को हटाने के लिए, आप get() नामक विधि का उपयोग कर सकते हैं। यह विधि कॉल किए जाने पर कतार से आइटम को हटाने की अनुमति देती है।

निम्न उदाहरण दिखाता है कि कतार से किसी आइटम को कैसे हटाया जाए।

import queue
q1 = queue.Queue()
q1.put(10)

item1 = q1.get()

print('The item removed from the queue is ', item1)

आउटपुट:

The item removed from the queue is  10

अंतिम प्रवेश प्रथम निकास कतार उदाहरण

प्रथम आउट कतार में अंतिम के मामले में, जो तत्व अंतिम रूप से प्रविष्ट किया गया है, वह सबसे पहले बाहर आएगा।

LIFO, यानि पहली आउट कतार में अंतिम स्थान पर काम करने के लिए, हमें कतार मॉड्यूल को आयात करने और LifoQueue() विधि का उपयोग करने की आवश्यकता है।

कतार में कोई आइटम जोड़ें

यहां हम समझेंगे कि LIFO कतार में कोई आइटम कैसे जोड़ा जाता है।

import queue
q1 = queue.LifoQueue()
q1.put(10)

आपको LifoQueue पर put() विधि का उपयोग करना होगा, जैसा कि ऊपर दिए गए उदाहरण में दिखाया गया है।

कतार से कोई आइटम हटाएँ

LIFOqueue से किसी आइटम को हटाने के लिए आप get() विधि का उपयोग कर सकते हैं।

import queue
q1 = queue.LifoQueue()
q1.put(10)

item1 = q1.get()

print('The item removed from the LIFO queue is ', item1)

आउटपुट:

The item removed from the LIFO queue is  10

किसी कतार में 1 से अधिक आइटम जोड़ें

ऊपर दिए गए उदाहरणों में हमने देखा कि FIFO और LIFOqueue के लिए एक आइटम कैसे जोड़ा जाता है और आइटम को कैसे हटाया जाता है। अब हम देखेंगे कि एक से अधिक आइटम कैसे जोड़े जाते हैं और उन्हें कैसे हटाया जाता है।

FIFOqueue में एक आइटम जोड़ें

import queue
q1 = queue.Queue()

for i in range(20):
    q1.put(i) # this will additem from 0 to 20 to the queue

FIFOqueue से कोई आइटम निकालें

import queue
q1 = queue.Queue()

for i in range(20):
    q1.put(i) # this will additem from 0 to 20 to the queue

while not q1.empty():
print("The value is ", q1.get()) # get() will remove the item from the queue.

आउटपुट:

The value is  0
The value is  1
The value is  2
The value is  3
The value is  4
The value is  5
The value is  6
The value is  7
The value is  8
The value is  9
The value is  10
The value is  11
The value is  12
The value is  13
The value is  14
The value is  15
The value is  16
The value is  17
The value is  18
The value is  19

LIFOqueue में एक आइटम जोड़ें

import queue
q1 = queue.LifoQueue()
for i in range(20):
    q1.put(i) # this will additem from 0 to 20 to the queue

LIFOqueue से कोई आइटम निकालें

import queue
q1 = queue.LifoQueue()

for i in range(20):
    q1.put(i) # this will additem from 0 to 20 to the queue


while not q1.empty():
print("The value is ", q1.get()) # get() will remove the item from the queue.

आउटपुट:

The value is  19
The value is  18
The value is  17
The value is  16
The value is  15
The value is  14
The value is  13
The value is  12
The value is  11
The value is  10
The value is  9
The value is  8
The value is  7
The value is  6
The value is  5
The value is  4
The value is  3
The value is  2
The value is  1
The value is  0 

सॉर्टिंग कतार

निम्न उदाहरण कतार सॉर्टिंग को दर्शाता है। सॉर्टिंग के लिए प्रयुक्त एल्गोरिथ्म बबल सॉर्ट है।

import queue
q1 = queue.Queue()
#Addingitems to the queue
q1.put(11)
q1.put(5)
q1.put(4)
q1.put(21)
q1.put(3)
q1.put(10)

#using bubble sort on the queue
n =  q1.qsize()
for i in range(n):
    x = q1.get() # the element is removed
    for j in range(n-1):
        y = q1.get() # the element is removed
        if x > y :  
            q1.put(y)   #the smaller one is put at the start of the queue
        else:
            q1.put(x)  # the smaller one is put at the start of the queue
            x = y     # the greater one is replaced with x and compared again with nextelement
    q1.put(x)

while (q1.empty() == False): 
print(q1.queue[0], end = " ")  
        q1.get()

आउटपुट:

3 4 5 10 11 21

Reversing कतार

कतार को उलटने के लिए, आप दूसरी कतार और पुनरावृत्ति का उपयोग कर सकते हैं।

निम्नलिखित उदाहरण दिखाता है कि कतार को कैसे उलटा जाए।

उदाहरण:

import queue
q1 = queue.Queue()

q1.put(11)
q1.put(5)
q1.put(4)
q1.put(21)
q1.put(3)
q1.put(10)

def reverseQueue (q1src, q2dest) :  
    buffer = q1src.get()
    if (q1src.empty() == False) :
reverseQueue(q1src, q2dest)      #using recursion
    q2dest.put(buffer)
return q2dest

q2dest = queue.Queue()
qReversed = reverseQueue(q1,q2dest)

while (qReversed.empty() == False): 
print(qReversed.queue[0], end = " ")  
        qReversed.get()

आउटपुट:

10 3 21 4 5 11

सारांश

  • कतार एक कंटेनर है जो डेटा रखता है। कतार दो प्रकार की होती है, FIFO और LIFO।
  • FIFO (पहले आओ पहले पाओ कतार) के लिए, जो तत्व पहले जाएगा, वह सबसे पहले बाहर आएगा।
  • LIFO (लास्ट इन फर्स्ट आउट क्यू) के लिए, जो तत्व अंतिम रूप से प्रविष्ट किया जाएगा, वह सबसे पहले बाहर आएगा।
  • किसी कतार में कोई आइटम put(item) विधि का उपयोग करके जोड़ा जाता है।
  • किसी आइटम को हटाने के लिए get() विधि का उपयोग किया जाता है।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: