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:

Python Lavoro in 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)

Python Lavoro in coda

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