Coda Python: FIFO, esempio LIFO

Sommario:

Anonim

Cos'è la coda Python?

Una coda è un contenitore che contiene dati. I dati immessi per primi verranno rimossi per primi, quindi una coda viene anche chiamata "First in First Out" (FIFO). La coda ha due estremità anteriori e posteriori. Gli articoli vengono inseriti dal retro e rimossi dal lato anteriore.

In questo tutorial di Python imparerai:

  • Cos'è la coda Python?
  • Come funziona Python Queue?
  • Tipi di coda in Python
  • Installazione della coda Python
  • Metodi disponibili nelle classi Queue e LifoQueue
  • Esempio di coda First In First Out
  • Esempio di coda Last In First Out
  • Aggiungi più di 1 elemento in una coda
  • Coda di ordinamento
  • Coda di inversione

Come funziona Python Queue?

La coda può essere facilmente confrontata con l'esempio del mondo reale: la fila di persone in coda alla biglietteria, la persona in piedi per prima riceverà il biglietto per prima, 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:

Il Retro rappresenta il punto in cui gli articoli vengono inseriti all'interno della coda. In questo esempio, 7 è il valore per quello.

Il fronte rappresenta il punto in cui verranno rimossi gli elementi dalla coda. Se rimuovi un elemento dalla coda, il primo elemento che otterrai è 1, come mostrato in figura.

L'elemento 1 è stato il primo ad essere inserito in coda, e mentre lo si rimuove è 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 nel mezzo. Non è possibile rimuovere l'elemento 5 in modo casuale dalla coda, per farlo dovrai rimuovere tutti gli elementi prima di 5. Gli elementi in coda verranno rimossi nell'ordine in cui sono stati inseriti.

Tipi di coda in Python

Esistono principalmente due tipi di coda in 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 la classe Queue () dal modulo della coda.

  • Last in First out Queue: qui, l'elemento inserito per ultimo sarà il primo a uscire.

    Per lavorare con LIFO, devi chiamare la classe LifoQueue () dal modulo della coda.

Installazione della coda Python

È molto facile lavorare con la coda in Python. Ecco i passaggi da seguire per utilizzare la coda nel codice.

Passaggio 1) Devi solo importare il modulo della 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).

Passaggio 2) Per lavorare con la coda FIFO, chiamare la classe Queue utilizzando il modulo della coda importato come mostrato di seguito:

import queueq1 = queue.Queue()

Passaggio 3) Per lavorare con la coda LIFO, chiamare la classe LifoQueue () come mostrato di seguito:

import queueq1 = queue.LifoQueue()

Metodi disponibili nelle classi Queue e LifoQueue

Di seguito sono riportati i metodi importanti disponibili all'interno delle classi Queue e LifoQueue:

  • put (elemento): questo inserirà l'elemento nella coda.
  • get (): questo ti restituirà un elemento dalla coda.
  • empty (): restituirà true se la coda è vuota e false se sono presenti elementi.
  • qsize (): restituisce la dimensione della coda.
  • full (): restituisce true se la coda è piena, altrimenti false.

Esempio di coda First In First Out

In caso di first in first out, l'elemento che va per primo sarà il primo ad 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, importare prima la coda del modulo, come mostrato nell'esempio seguente.

Per aggiungere un elemento, puoi utilizzare il metodo put () come mostrato nell'esempio:

import queueq1 = queue.Queue()q1.put(10) #this will additem 10 to the queue.

Per impostazione predefinita, la dimensione della coda è infinita e puoi aggiungere un numero qualsiasi di elementi ad essa. Nel caso si voglia definire la dimensione della coda lo stesso può essere fatto come segue

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.

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à più 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 viene chiamato.

L'esempio seguente mostra come rimuovere un elemento dalla coda.

import queueq1 = 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 Last In First Out

Nel caso di ultimo nella prima coda di uscita, l'elemento inserito per ultimo sarà il primo a uscire.

Per lavorare con LIFO, cioè l'ultimo nella prima coda di uscita, dobbiamo importare il modulo della coda e utilizzare il metodo LifoQueue ().

Aggiungi un elemento in una coda

Qui capiremo come aggiungere un articolo alla coda LIFO.

import queueq1 = 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 da LIFOqueue puoi utilizzare il metodo get ().

import queueq1 = 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 FIFOqueue

import queueq1 = queue.Queue()for i in range(20):q1.put(i) # this will additem from 0 to 20 to the queue

Rimuovi un elemento dalla 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.

Produzione:

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

Aggiungi un elemento in un LIFOqueue

import queueq1 = queue.LifoQueue()for i in range(20):q1.put(i) # this will additem from 0 to 20 to the queue

Rimuovere un elemento da 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. 

Produzione:

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

Coda di ordinamento

L'esempio seguente mostra l'ordinamento delle code. L'algoritmo utilizzato per l'ordinamento è l'ordinamento a bolle.

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

Produzione:

3 4 5 10 11 21

Coda di inversione

Per invertire la coda, puoi utilizzare un'altra coda e la ricorsione.

L'esempio seguente mostra come invertire la coda.

Esempio:

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

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 va 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 (elemento).
  • Per rimuovere un elemento, viene utilizzato il metodo get ().