Cola de Python: ejemplo FIFO, LIFO

¿Qué es la cola de Python?

Una cola es un contenedor que contiene datos. Los datos que se ingresan primero se eliminarán primero y, por lo tanto, una cola también se denomina "Primero en entrar, primero en salir" (FIFO). La cola tiene dos extremos delante y detrás. Los artículos se introducen por la parte trasera y se retiran por la parte delantera.

¿Cómo funciona la cola de Python?

La cola se puede comparar fácilmente con el ejemplo del mundo real: la fila de personas esperando en la cola en el mostrador de boletos, la persona que esté primero obtendrá el boleto primero, seguida por la siguiente persona y así sucesivamente. La misma lógica se aplica también a la estructura de datos de la cola.

Aquí hay una representación esquemática de la cola:

Trabajo en cola de Python

El Rueda trasera representa el punto donde se insertan los elementos dentro de la cola. En este ejemplo, 7 es el valor para eso.

El Rueda delantera representa el punto donde se eliminarán los elementos de la cola. Si elimina un elemento de la cola, el primer elemento que obtendrá es 1, como se muestra en la figura.

El ítem 1 fue el primero en insertarse en la cola, y al retirarlo es el primero en salir. Por lo tanto, la cola se llama PRIMERO EN ENTRAR, PRIMERO EN SALIR (FIFO)

Trabajo en cola de Python

En una cola, los elementos se eliminan en orden y no se pueden eliminar en el medio. Simplemente no puede eliminar el elemento 5 al azar de la cola; para hacerlo, deberá eliminar todos los elementos antes del 5. Los elementos en la cola se eliminarán en el orden en que se inserten.

Tipos de cola en Python

Existen principalmente dos tipos de colas en Python:

  • Primero en entrar, primero en salir de la cola: Para esto, el elemento que entre primero será el primero en salir. Para trabajar con FIFO, hay que llamar Cola() clase del módulo de cola.
  • Último en entrar, primero en salir de la cola: aquí, el elemento que se ingrese en último lugar será el primero en salir. Para trabajar con LIFO, debe llamar LifoQueue() clase del módulo de cola.

Instalación de la cola de Python

Es muy fácil trabajar con cola en Python. Estos son los pasos a seguir para utilizar la cola en su código.

Paso 1) Sólo tienes que importar el módulo de cola, como se muestra a continuación:

import queue

El módulo está disponible de forma predeterminada con Python y no necesita ninguna instalación adicional para comenzar a trabajar con la cola. Hay 2 tipos de cola FIFO (primero en entrar, primero en salir) y LIFO (último en entrar, primero en salir).

Paso 2) Para trabajar con la cola FIFO, llame a la clase Queue usando el módulo de cola importado como se muestra a continuación:

import queue
q1 = queue.Queue()

Paso 3) Para trabajar con la cola LIFO, llame a la clase LifoQueue() como se muestra a continuación:

import queue
q1 = queue.LifoQueue()

Métodos disponibles dentro de las clases Queue y LifoQueue

Following Son los métodos importantes disponibles dentro de las clases Queue y LifoQueue:

  • poner(elemento): Esto colocará el elemento dentro de la cola.
  • conseguir(): Esto le devolverá un artículo de la cola.
  • vacío(): Devolverá verdadero si la cola está vacía y falso si hay elementos presentes.
  • qtamaño(): devuelve el tamaño de la cola.
  • lleno(): devuelve verdadero si la cola está llena, otrowise falso.

Ejemplo de cola de primero en entrar, primero en salir

En el caso del primero en entrar, primero en salir, el elemento que entre primero será el primero en salir.

Agregar un elemento en una cola

Trabajemos en un ejemplo para agregar un elemento a una cola. Para comenzar a trabajar con la cola, primero importe la cola del módulo, como se muestra en el siguiente ejemplo.

Para agregar un elemento, puede utilizar el método put() como se muestra en el ejemplo:

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

De forma predeterminada, el tamaño de la cola es infinito y puede agregarle cualquier cantidad de elementos. En caso de que desee definir el tamaño de la cola, puede hacer lo mismo de la siguiente manera

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.

Salida:

True

Ahora el tamaño de la cola es 5, no tomará más de 5 elementos y el método q1.full() devolverá verdadero. Agregar más elementos no ejecutará más el código.

Eliminar un elemento de la cola

Para eliminar un elemento de la cola, puede utilizar el método llamado get(). Este método permite elementos de la cola cuando se llama.

El following El ejemplo muestra cómo eliminar un elemento de la cola.

import queue
q1 = queue.Queue()
q1.put(10)

item1 = q1.get()

print('The item removed from the queue is ', item1)

Salida:

The item removed from the queue is  10

Ejemplo de cola de último en entrar, primero en salir

En el caso de ser el último en la cola de primeros en salir, el elemento que ingrese último será el primero en salir.

Para trabajar con LIFO, es decir, el último en la cola de salida, necesitamos importar el módulo de cola y utilizar el método LifoQueue().

Agregar un elemento en una cola

Aquí entenderemos cómo agregar un elemento a la cola LIFO.

import queue
q1 = queue.LifoQueue()
q1.put(10)

Debe utilizar el método put() en LifoQueue, como se muestra en el ejemplo anterior.

Eliminar un elemento de la cola

Para eliminar un elemento de LIFOqueue, puede utilizar el método get().

import queue
q1 = queue.LifoQueue()
q1.put(10)

item1 = q1.get()

print('The item removed from the LIFO queue is ', item1)

Salida:

The item removed from the LIFO queue is  10

Agregar más de 1 elemento en una cola

En los ejemplos anteriores, hemos visto cómo agregar un solo elemento y eliminarlo para FIFO y LIFOqueue. Ahora veremos cómo agregar más de un elemento y también eliminarlo.

Agregar un elemento en una cola FIFO

import queue
q1 = queue.Queue()

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

Eliminar un elemento de la cola 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.

Salida:

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

Agregar un elemento en una cola LIFO

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

Eliminar un elemento de LIFOqueue

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.

Salida:

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 

Cola de clasificación

Following El ejemplo muestra la clasificación de colas. El algoritmo utilizado para la clasificación es la clasificación de burbujas.

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

Salida:

3 4 5 10 11 21

Cola inversa

Para revertir la cola, puede utilizar otra cola y recursividad.

El following El ejemplo muestra cómo invertir la cola.

Ejemplo:

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

Salida:

10 3 21 4 5 11

Resumen

  • Una cola es un contenedor que contiene datos. Hay dos tipos de cola, FIFO y LIFO.
  • Para una cola FIFO (primero en entrar, primero en salir), el elemento que va primero será el primero en salir.
  • Para un LIFO (Último en entrar, primero en salir de la cola), el elemento que se ingrese en último lugar será el primero en salir.
  • Un elemento en una cola se agrega mediante el método put(item).
  • Para eliminar un elemento, se utiliza el método get().