Cola de Python:FIFO, ejemplo de 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 delantero y trasero. Los artículos se ingresan por la parte trasera y se retiran por la parte delantera.
En este tutorial de Python, aprenderá:
- ¿Qué es Python Queue?
- ¿Cómo funciona la cola de Python?
- 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 de inversión
¿Cómo funciona la cola de Python?
La cola se puede comparar fácilmente con el ejemplo del mundo real, la fila de personas que esperan en una fila 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:
La 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 ítem 1 fue el primero que se insertó en la cola, y al removerlo es el primero en salir. Por lo tanto, la cola se llama PRIMERO EN ENTRAR, PRIMERO EN SALIR (FIFO)
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 tendrá que eliminar todos los elementos antes del 5. Los elementos en la cola se eliminarán en el orden en que se insertan.
Tipos de cola en Python
Hay principalmente dos tipos de cola en Python:
- First in First out Queue:Para esto, el elemento que sale primero será el primero en salir.
Para trabajar con FIFO, debe llamar a Queue() clase del módulo de cola.
- Último en entrar, primero en salir de la cola:aquí, el último elemento que se ingresa será el primero en salir.
Para trabajar con LIFO, debe llamar a LifoQueue() clase del módulo de cola.
Instalación de la cola de Python
Es muy fácil trabajar con la cola en python. Estos son los pasos a seguir para hacer uso de la cola en su código.
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).
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 la clase Queue y LifoQueue
Los siguientes son los métodos importantes disponibles dentro de la clase Queue y LifoQueue:
- poner(elemento): Esto pondrá el elemento dentro de la cola.
- obtener(): Esto le devolverá un elemento de la cola.
- vacío(): Devolverá verdadero si la cola está vacía y falso si hay elementos presentes.
- qsize(): devuelve el tamaño de la cola.
- completo(): devuelve verdadero si la cola está llena; de lo contrario, devuelve falso.
Ejemplo de cola de primero en entrar, primero en salir
En el caso de first in first out, el elemento que sale primero será el primero en salir.
Agregar un elemento 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 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 hacerlo 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, 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 usar 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 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 que el último en la cola sea el primero en salir, el elemento que se ingrese en último lugar será el primero en salir.
Para trabajar con LIFO, es decir, el último en la cola primero en salir, necesitamos importar el módulo de cola y hacer uso del 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)
Tienes que 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 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 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 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 FIFOqueue
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 la 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 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
El siguiente ejemplo muestra la clasificación de la cola. El algoritmo utilizado para la clasificación es la clasificación de burbuja.
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 de inversión
Para invertir la cola, puede utilizar otra cola y recursividad.
El siguiente 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 un FIFO (First in First out Queue), el elemento que sale primero será el primero en salir.
- Para un LIFO (último en entrar, primero en salir), el último elemento que se ingrese será el primero en salir.
- Un elemento en una cola se agrega usando el método put(elemento).
- Para eliminar un elemento, se usa el método get().
python
- Operadores de Python
- Lista de Python
- Diccionario de Python
- Python String strip() Función con EJEMPLO
- Longitud de cadena de Python | método len() Ejemplo
- Tutorial de Rendimiento en Python:Generador y Rendimiento vs Ejemplo de Retorno
- Contador de Python en colecciones con ejemplo
- Función Enumerate() en Python:Bucle, Tupla, Cadena (Ejemplo)
- Python time.sleep():agregue retraso a su código (ejemplo)
- Índice de lista de Python () con ejemplo
- FIFO vs LIFO:diferencias, ventajas y desventajas, aplicaciones y más