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

Rezumaศ›i aceastฤƒ postare cu: