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


