Ce este coada Python?
O coadă este un container care conține date. Datele introduse mai întâi vor fi eliminate mai întâi și, prin urmare, o coadă se mai numește „First in First Out” (FIFO). Coada are două capete față și spate. Articolele sunt introduse din spate și scoase din față.
În acest tutorial Python, veți învăța:
- Ce este coada Python?
- Cum funcționează coada Python?
- Tipuri de coadă în Python
- Instalare coadă Python
- Metode disponibile în clasa Queue și LifoQueue
- First In First Out Exemplu de coadă
- Exemplu de coadă Last In First Out
- Adăugați mai mult de 1 articol într-o coadă
- Coada de sortare
- Coada de inversare
Cum funcționează coada Python?
Coada poate fi ușor comparată cu exemplul din lumea reală, linia de oameni care așteaptă într-o coadă la ghișeul de bilete, persoana care stă prima va primi biletul mai întâi, 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:
Partea din spate reprezintă punctul în care elementele sunt inserate în coadă. În acest exemplu, 7 este o valoare pentru asta.
Frontul reprezintă punctul în care elementele din coadă vor fi eliminate. Dacă eliminați un element 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ă și, în timp ce îl eliminați, 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 din mijloc. Pur și simplu nu puteți elimina elementul 5 aleatoriu din coadă, pentru a face acest lucru va trebui să eliminați toate elementele înainte de 5. Elementele din coadă vor fi eliminate în ordinea în care sunt inserate.
Tipuri de coadă în Python
Există în principal două tipuri de coadă în Python:
- First in First out Queue: Pentru aceasta, elementul care merge primul va fi primul care va ieși.
Pentru a lucra cu FIFO, trebuie să apelați clasa Queue () din modulul de coadă.
- Ultima în prima coadă: aici, elementul introdus ultima va fi primul care va ieși.
Pentru a lucra cu LIFO, trebuie să apelați clasa LifoQueue () din modulul de coadă.
Instalare coadă Python
Este foarte ușor să lucrați cu coada în python. Iată pașii de urmat pentru a utiliza coada în codul dvs.
Pasul 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 (prima în prima ieșire) și LIFO (ultima în prima ieșire).
Pasul 2) Pentru a lucra cu coada FIFO, apelați clasa Queue utilizând modulul de coadă importat așa cum se arată mai jos:
import queueq1 = queue.Queue()
Pasul 3) Pentru a lucra cu coada LIFO, apelați clasa LifoQueue () așa cum se arată mai jos:
import queueq1 = queue.LifoQueue()
Metode disponibile în clasa Queue și LifoQueue
Următoarele sunt metodele importante disponibile în clasa Queue și LifoQueue:
- put (item): Aceasta va pune elementul în coadă.
- get (): Aceasta vă va întoarce un articol din coadă.
- empty (): Va reveni adevărat dacă coada este goală și falsă dacă sunt prezente elemente.
- qsize (): returnează dimensiunea cozii.
- full (): returnează true dacă coada este plină, altfel falsă.
First In First Out Exemplu de coadă
În cazul primului în primul ieșit, elementul care merge primul va fi primul care va ieși.
Adăugați și introduceți o coadă
Să lucrăm la un exemplu pentru a adăuga un element într-o coadă. Pentru a începe să lucrați cu coada, importați mai întâi coada modulului, așa cum se arată în exemplul de mai jos.
Pentru a adăuga un articol, puteți utiliza metoda put () așa cum se arată în exemplu:
import queueq1 = 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 ea. În cazul în care doriți să definiți dimensiunea cozii, același lucru se poate face după cum urmează
import queueq1 = 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 articole, iar metoda q1.full () va reveni adevărat. Adăugarea de elemente suplimentare nu va mai executa codul.
Eliminați un element din coadă
Pentru a elimina un element din coadă, puteți utiliza metoda numită get (). Această metodă permite elemente din coadă atunci când este apelat.
Următorul exemplu arată cum să eliminați un element din coadă.
import queueq1 = 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 din prima coadă de ieșire, elementul care este introdus ultima va fi primul care va ieși.
Pentru a lucra cu LIFO, adică ultima în prima coadă, trebuie să importăm modulul de coadă și să folosim metoda LifoQueue ().
Adăugați și introduceți o coadă
Aici vom înțelege cum să adăugăm un element la coada LIFO.
import queueq1 = 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 element din coadă
Pentru a elimina un articol din LIFOqueue puteți utiliza metoda get ().
import queueq1 = 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 se adaugă un singur articol și se elimină elementul pentru FIFO și LIFOqueue. Acum vom vedea cum să adăugăm mai multe articole și să îl eliminăm.
Adăugați și introduceți elementul într-un FIFOqueue
import queueq1 = 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 FIFOqueue
import queueq1 = queue.Queue()for i in range(20):q1.put(i) # this will additem from 0 to 20 to the queuewhile not q1.empty():print("The value is ", q1.get()) # get() will remove the item from the queue.
Ieșire:
The value is 0The value is 1The value is 2The value is 3The value is 4The value is 5The value is 6The value is 7The value is 8The value is 9The value is 10The value is 11The value is 12The value is 13The value is 14The value is 15The value is 16The value is 17The value is 18The value is 19
Adăugați și introduceți un articol în LIFOqueue
import queueq1 = 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 LIFOqueue
import queueq1 = queue.LifoQueue()for i in range(20):q1.put(i) # this will additem from 0 to 20 to the queuewhile not q1.empty():print("The value is ", q1.get()) # get() will remove the item from the queue.
Ieșire:
The value is 19The value is 18The value is 17The value is 16The value is 15The value is 14The value is 13The value is 12The value is 11The value is 10The value is 9The value is 8The value is 7The value is 6The value is 5The value is 4The value is 3The value is 2The value is 1The value is 0
Coada de sortare
Următorul exemplu arată sortarea cozii. Algoritmul folosit pentru sortare este sortarea cu bule.
import queueq1 = queue.Queue()#Addingitems to the queueq1.put(11)q1.put(5)q1.put(4)q1.put(21)q1.put(3)q1.put(10)#using bubble sort on the queuen = q1.qsize()for i in range(n):x = q1.get() # the element is removedfor j in range(n-1):y = q1.get() # the element is removedif x> y :q1.put(y) #the smaller one is put at the start of the queueelse:q1.put(x) # the smaller one is put at the start of the queuex = y # the greater one is replaced with x and compared again with nextelementq1.put(x)while (q1.empty() == False):print(q1.queue[0], end = " ")q1.get()
Ieșire:
3 4 5 10 11 21
Coada de inversare
Pentru a inversa coada, puteți utiliza o altă coadă și recursivitate.
Următorul exemplu arată cum să inversați coada.
Exemplu:
import queueq1 = 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 recursionq2dest.put(buffer)return q2destq2dest = 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 conține date. Există două tipuri de coadă, FIFO și LIFO.
- Pentru un FIFO (First in First out Queue), elementul care merge primul va fi primul care va ieși.
- Pentru un LIFO (Last in First out Queue), elementul introdus ultima va fi primul care va ieși.
- Un element dintr-o coadă este adăugat folosind metoda put (item).
- Pentru a elimina un element, se folosește metoda get ().