Python Coda: FIFO, LIFO Esempio
Che cos'è la 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:
Posteriore rappresenta il punto in cui gli elementi vengono inseriti all'interno della coda. In questo esempio, 7 è il valore.
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
Sommario
- 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().