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