Cola de Python: ejemplo FIFO, LIFO

¿Qué es Python Queue?

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 elementos se ingresan por la parte posterior y se retiran por la parte frontal.

En este tutorial de Python, aprenderá:

  • ¿Qué es Python Queue?
  • ¿Cómo funciona Python Queue?
  • Tipos de cola en Python
  • Instalación de la cola de Python
  • Métodos disponibles dentro de la clase Queue y LifoQueue
  • Ejemplo de cola de primero en entrar, primero en salir
  • Ejemplo de cola de último en entrar, primero en salir
  • Agregar más de 1 elemento en una cola
  • Cola de clasificación
  • Cola inversa

¿Cómo funciona Python Queue?

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

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

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

El frente 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 elemento 1 fue el primero en insertarse en la cola y, al eliminarlo, es el primero en salir. Por lo tanto, la cola se llama FIRST IN FIRST OUT (FIFO)

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

Tipos de cola en Python

Hay principalmente dos tipos de cola en Python:

  • First in First out Queue: Para esto, el elemento que va primero será el primero en salir.

    Para trabajar con FIFO, debe llamar a la clase Queue () desde el módulo de cola.

  • Cola de último en entrar, primero en salir: aquí, el elemento que se ingrese en último lugar será el primero en salir.

    Para trabajar con LIFO, debe llamar a la clase LifoQueue () desde el 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 hacer uso de la cola en su código.

Paso 1) Solo tiene 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 utilizando el módulo de cola importado como se muestra a continuación:

import queueq1 = queue.Queue()

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

import queueq1 = queue.LifoQueue()

Métodos disponibles dentro de la clase Queue y LifoQueue

A continuación se muestran los métodos importantes disponibles dentro de la clase Queue y LifoQueue:

  • put (item): Esto colocará el elemento dentro de la cola.
  • get (): esto le devolverá un elemento de la cola.
  • empty (): Devolverá verdadero si la cola está vacía y falso si hay elementos presentes.
  • qsize (): devuelve el tamaño de la cola.
  • full (): devuelve verdadero si la cola está llena, de lo contrario falso.

Ejemplo de cola de primero en entrar, primero en salir

En el caso de primero en entrar, primero en salir, el elemento que va primero será el primero en salir.

Agregar un artículo en una cola

Trabajemos en un ejemplo para agregar un elemento en 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 queueq1 = 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 se puede hacer lo mismo de la siguiente manera

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.

Producción:

True

Ahora el tamaño de la cola es 5, y 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 siguiente ejemplo muestra cómo eliminar un elemento de la cola.

import queueq1 = queue.Queue()q1.put(10)item1 = q1.get()print('The item removed from the queue is ', item1)

Producción:

The item removed from the queue is 10

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

En el caso del último en la primera cola de salida, el último elemento que se ingrese será el primero en salir.

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

Agregar un artículo en una cola

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

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

Debe usar 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 queueq1 = queue.LifoQueue()q1.put(10)item1 = q1.get()print('The item removed from the LIFO queue is ', item1)

Producción:

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 eliminar el elemento para FIFO y LIFOqueue. Ahora veremos cómo agregar más de un elemento y también eliminarlo.

Agregar un elemento en una FIFOqueue

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

Producción:

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

Agregar un elemento en una LIFOqueue

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

Producción:

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

Cola de clasificación

El siguiente ejemplo muestra la clasificación de la cola. El algoritmo utilizado para la clasificación es la clasificación de burbujas.

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

Producción:

3 4 5 10 11 21

Cola inversa

Para invertir la cola, puede hacer uso de otra cola y recursividad.

El siguiente ejemplo muestra cómo invertir la cola.

Ejemplo:

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

Producción:

10 3 21 4 5 11

Resumen:

  • Una cola es un contenedor que contiene datos. Hay dos tipos de cola, FIFO y LIFO.
  • Para un FIFO (First in First out Queue), el elemento que va primero será el primero en salir.
  • Para un LIFO (último en entrar, primero en salir), 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 (elemento).
  • Para eliminar un elemento, se utiliza el método get ().

Articulos interesantes...