Python Coada: FIFO, LIFO Exemplu

Ce Este Python Coadă?

O coadă este un container care deține date. Datele care sunt introduse mai întâi vor fi șterse mai întâi și, prin urmare, o coadă este numită și „Primul intrat, primul ieșit” (FIFO). Coada are două capete în față și în spate. Articolele sunt introduse din spate și scoase din față.

Cum Python Lucru la coadă?

Coada poate fi comparată cu ușurință cu exemplul din lumea reală, rândul de oameni care așteaptă la coadă la ghișeul de bilete, persoana care stă prima va primi biletul prima, urmată de următoarea persoană și așa mai departe. Aceeași logică este valabilă și pentru structura de date a cozii.

Iată o reprezentare schematică a cozii:

Python Lucru la coadă

Spate reprezintă punctul în care articolele sunt introduse în coadă. În acest exemplu, 7 este valoarea pentru asta.

Față reprezintă punctul în care articolele din coadă vor fi eliminate. Dacă eliminați un articol din coadă, primul element pe care îl veți obține este 1, așa cum se arată în figură.

Elementul 1 a fost primul care a fost introdus în coadă, iar în timp ce îl scoate este primul care a ieșit. Prin urmare, coada se numește FIRST IN FIRST OUT (FIFO)

Python Lucru la coadă

Într-o coadă, articolele sunt eliminate în ordine și nu pot fi eliminate între ele. Pur și simplu nu puteți elimina elementul 5 la întâmplare din coadă, pentru a face asta va trebui să eliminați toate articolele înainte de 5. Articolele din coadă vor fi eliminate în ordinea în care sunt introduse.

Tipuri de coadă în Python

Există în principal două tipuri de coadă Python:

  • First in First out Queue: Pentru aceasta, elementul care merge primul va fi primul care iese. Pentru a lucra cu FIFO, trebuie să apelați Coadă() clasa din modulul de coadă.
  • Ultimul în coada Primului ieșit: aici, elementul care este introdus ultimul va fi primul care iese. Pentru a lucra cu LIFO, trebuie să apelați LifoQueue() clasa din modulul de coadă.

Python Instalare coada

Este foarte ușor să lucrezi cu coada în python. Iată pașii de urmat pentru a utiliza coada din codul dvs.

Pas 1) Trebuie doar să importați modulul de coadă, așa cum se arată mai jos:

import queue

Modulul este disponibil implicit cu python și nu aveți nevoie de nicio instalare suplimentară pentru a începe să lucrați cu coada. Există 2 tipuri de coadă FIFO (primul intrat, primul ieşit) şi LIFO (ultimul intrat, primul ieşit).

Pas 2) Pentru a lucra cu FIFO queue , apelați clasa Queue folosind modulul de coadă importat, după cum se arată mai jos:

import queue
q1 = queue.Queue()

Pas 3) Pentru a lucra cu coada LIFO, apelați clasa LifoQueue() după cum se arată mai jos:

import queue
q1 = queue.LifoQueue()

Metode disponibile în clasa Queue și LifoQueue

Următoarele sunt metodele importante disponibile în clasa Queue și LifoQueue:

  • pune(articol): Acest lucru va pune articolul în coadă.
  • obține(): Acest lucru vă va returna un articol din coadă.
  • gol(): Va returna true dacă coada este goală și false dacă sunt prezente elemente.
  • qsize(): returnează dimensiunea cozii.
  • deplin(): returnează adevărat dacă coada este plină, în caz contrar, fals.

Exemplu de coadă First In First Out

În cazul primului intrat, primul ieșit, elementul care iese primul va fi primul care iese.

Adăugați și articol într-o coadă

Să lucrăm la un exemplu pentru a adăuga un articol într-o coadă. Pentru a începe să lucrați cu coada, importați mai întâi coada de module, așa cum se arată în exemplul de mai jos.

Pentru a adăuga un element, puteți utiliza metoda put() așa cum se arată în exemplu:

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

În mod implicit, dimensiunea cozii este infinită și puteți adăuga orice număr de articole la aceasta. În cazul în care doriți să definiți dimensiunea cozii, același lucru se poate face după cum urmează

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.

ieșire:

True

Acum dimensiunea cozii este de 5 și nu va dura mai mult de 5 elemente, iar metoda q1.full() va returna true. Adăugarea altor elemente nu va mai executa codul.

Eliminați un articol din coadă

Pentru a elimina un articol din coadă, puteți folosi metoda numită get(). Această metodă permite articole din coadă atunci când sunt apelate.

Următorul exemplu arată cum să eliminați un articol din coadă.

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

item1 = q1.get()

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

ieșire:

The item removed from the queue is  10

Exemplu de coadă Last In First Out

În cazul ultimului în coada primul ieşit, elementul care este introdus ultimul va fi primul care iese.

Pentru a lucra cu LIFO, adică ultimul în coada primul ieşit, trebuie să importam modulul de coadă şi să folosim metoda LifoQueue().

Adăugați și articol într-o coadă

Aici vom înțelege cum să adăugați un articol la coada LIFO.

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

Trebuie să utilizați metoda put() pe LifoQueue, așa cum se arată în exemplul de mai sus.

Eliminați un articol din coadă

Pentru a elimina un articol din LIFOqueue, puteți folosi metoda get() .

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

item1 = q1.get()

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

ieșire:

The item removed from the LIFO queue is  10

Adăugați mai mult de 1 articol într-o coadă

În exemplele de mai sus, am văzut cum să adăugați un singur articol și să eliminați elementul pentru FIFO și LIFOqueue. Acum vom vedea cum să adăugăm mai mult de un articol și, de asemenea, să îl eliminam.

Adăugați și elementul într-o coadă FIFO

import queue
q1 = queue.Queue()

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

Eliminați un articol din coada FIFO

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.

ieșire:

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

Adăugați și element într-o coadă LIFO

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

Eliminați un articol din coada LIFO

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.

ieșire:

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 

Coada de sortare

Următorul exemplu arată sortarea cozii. Algoritmul folosit pentru sortare este sortarea cu bule.

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()

ieșire:

3 4 5 10 11 21

Reversing Queue

Pentru a inversa coada, puteți utiliza o altă coadă și recursivitate.

Următorul exemplu arată cum să inversați coada.

Exemplu:

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()

ieșire:

10 3 21 4 5 11

Rezumat

  • O coadă este un container care deține date. Există două tipuri de coadă, FIFO și LIFO.
  • Pentru o coadă FIFO (First in First out Queue), elementul care merge primul va fi primul care iese.
  • Pentru un LIFO (Last in First out Queue), elementul care este introdus ultimul va fi primul care iese.
  • Un articol dintr-o coadă este adăugat folosind metoda put(item).
  • Pentru a elimina un element, se folosește metoda get().