Python Coda: FIFO, LIFO Esempio
Cosa รจ Python Fare la coda?
Una coda รจ un contenitore che contiene dati. I dati inseriti per primi verranno rimossi per primi, per questo la coda viene anche chiamata โFirst in First Outโ (FIFO). La coda ha due estremitร davanti e dietro. Gli articoli vengono inseriti dalla parte posteriore e rimossi dalla parte anteriore.
Che aspetto ha e come funziona il Python Lavoro in coda?
La coda puรฒ essere facilmente paragonata all'esempio del mondo reale: la fila di persone in fila alla biglietteria, la persona che sta per prima riceverร per prima il biglietto, seguita dalla persona successiva e cosรฌ via. La stessa logica vale anche per la struttura dei dati della coda.
Ecco una rappresentazione schematica della coda:
Migliori Posteriore rappresenta il punto in cui gli elementi vengono inseriti all'interno della coda. In questo esempio, 7 รจ il valore.
Migliori Anteriore rappresenta il punto in cui verranno rimossi gli elementi dalla coda. Se rimuovi un elemento dalla coda, il primo elemento che otterrai sarร 1, come mostrato in figura.
L'elemento 1 รจ stato il primo ad essere inserito nella coda e mentre viene rimosso รจ il primo ad uscire. Quindi la coda si chiama FIRST IN FIRST OUT (FIFO)
In una coda, gli elementi vengono rimossi in ordine e non possono essere rimossi da quelli intermedi. Non puoi rimuovere l'elemento 5 in modo casuale dalla coda, per farlo dovrai rimuovere tutti gli elementi prima del 5. Gli elementi in coda verranno rimossi nell'ordine in cui sono inseriti.
Tipi di coda in ingresso Python
Ci sono principalmente due tipi di code in ingresso Python:
- First in First out Queue: per questo, l'elemento che va per primo sarร il primo a uscire. Per lavorare con FIFO, devi chiamare Coda() classe dal modulo coda.
- Last in First out Queue: qui, l'elemento inserito per ultimo sarร il primo a uscire. Per lavorare con LIFO, devi chiamare LifoQueue() classe dal modulo coda.
Python coda di installazione
ร molto semplice lavorare con la coda in Python. Ecco i passaggi da seguire per utilizzare la coda nel codice.
Passo 1) Devi solo importare il modulo coda, come mostrato di seguito:
import queue
Il modulo รจ disponibile per impostazione predefinita con Python e non รจ necessaria alcuna installazione aggiuntiva per iniziare a lavorare con la coda. Esistono 2 tipi di coda FIFO (first in first out) e LIFO (last in first out).
Passo 2) Per lavorare con la coda FIFO, chiama la classe Queue utilizzando il modulo coda importato come mostrato di seguito:
import queue q1 = queue.Queue()
Passo 3) Per lavorare con la coda LIFO chiamare la classe LifoQueue() come mostrato di seguito:
import queue q1 = queue.LifoQueue()
Metodi disponibili all'interno della classe Queue e LifoQueue
Di seguito sono riportati i metodi importanti disponibili all'interno delle classi Queue e LifoQueue:
- mettere(oggetto): Questo inserirร l'elemento nella coda.
- Ottenere(): Questo ti restituirร un oggetto dalla coda.
- vuoto(): Restituirร true se la coda รจ vuota e false se sono presenti elementi.
- qdimensione(): restituisce la dimensione della coda.
- pieno(): restituisce true se la coda รจ piena, altrimenti false.
Esempio di coda First In First Out
Nel caso del first in first out, l'elemento che esce per primo sarร il primo a uscire.
Aggiungi un elemento in una coda
Lavoriamo su un esempio per aggiungere un elemento in una coda. Per iniziare a lavorare con la coda, importa prima la coda del modulo, come mostrato nell'esempio seguente.
Per aggiungere un elemento, puoi utilizzare il metodo put() come mostrato nell'esempio:
import queue q1 = queue.Queue() q1.put(10) #this will additem 10 to the queue.
Per impostazione predefinita, la dimensione della coda รจ infinita e puoi aggiungervi un numero qualsiasi di elementi. Nel caso in cui si desideri definire la dimensione della coda, รจ possibile procedere come segue
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.
Produzione:
True
Ora la dimensione della coda รจ 5 e non ci vorranno piรน di 5 elementi e il metodo q1.full() restituirร true. L'aggiunta di altri elementi non eseguirร ulteriormente il codice.
Rimuovi un elemento dalla coda
Per rimuovere un elemento dalla coda, puoi utilizzare il metodo chiamato get(). Questo metodo consente gli elementi dalla coda quando vengono chiamati.
L'esempio seguente mostra come rimuovere un elemento dalla coda.
import queue
q1 = queue.Queue()
q1.put(10)
item1 = q1.get()
print('The item removed from the queue is ', item1)
Produzione:
The item removed from the queue is 10
Esempio di coda Ultimo entrato Primo uscito
Nel caso di ultimo nella prima coda di uscita, l'elemento inserito per ultimo sarร il primo ad uscire.
Per lavorare con LIFO, cioรจ con l'ultimo della coda in uscita, dobbiamo importare il modulo della coda e utilizzare il metodo LifoQueue().
Aggiungi un elemento in una coda
Qui capiremo come aggiungere un elemento alla coda LIFO.
import queue q1 = queue.LifoQueue() q1.put(10)
Devi usare il metodo put() su LifoQueue, come mostrato nell'esempio sopra.
Rimuovi un elemento dalla coda
Per rimuovere un elemento dalla LIFOqueue puoi utilizzare il metodo get() .
import queue
q1 = queue.LifoQueue()
q1.put(10)
item1 = q1.get()
print('The item removed from the LIFO queue is ', item1)
Produzione:
The item removed from the LIFO queue is 10
Aggiungi piรน di 1 elemento in una coda
Negli esempi precedenti abbiamo visto come aggiungere un singolo elemento e rimuovere l'elemento per FIFO e LIFOqueue. Ora vedremo come aggiungere piรน di un elemento e anche rimuoverlo.
Aggiungi un elemento in una coda FIFO
import queue
q1 = queue.Queue()
for i in range(20):
q1.put(i) # this will additem from 0 to 20 to the queue
Rimuovi un elemento dalla coda 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.
Produzione:
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
Aggiungi un elemento in una coda LIFO
import queue
q1 = queue.LifoQueue()
for i in range(20):
q1.put(i) # this will additem from 0 to 20 to the queue
Rimuovi un elemento dalla coda 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.
Produzione:
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
Coda di ordinamento
L'esempio seguente mostra l'ordinamento della coda. L'algoritmo utilizzato per l'ordinamento รจ il bubble sort.
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()
Produzione:
3 4 5 10 11 21
Revinserimento coda
Per invertire la coda, puoi utilizzare un'altra coda e la ricorsione.
L'esempio seguente mostra come invertire la coda.
Esempio:
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()
Produzione:
10 3 21 4 5 11
Sintesi
- Una coda รจ un contenitore che contiene dati. Esistono due tipi di coda, FIFO e LIFO.
- Per un FIFO (First in First out Queue), l'elemento che esce per primo sarร il primo a uscire.
- Per un LIFO (Last in First out Queue), l'elemento inserito per ultimo sarร il primo a uscire.
- Un elemento in una coda viene aggiunto utilizzando il metodo put(item).
- Per rimuovere un elemento, viene utilizzato il metodo get().


