Pila y cola en Python usando el módulo de cola

Una lista de python simple también puede actuar como cola y pila. El mecanismo de cola se usa ampliamente y para muchos propósitos en la vida diaria. Una cola sigue la regla FIFO (primero en entrar, primero en salir) y se usa en la programación para clasificar y para muchas cosas más. Python proporciona Class queue como un módulo que generalmente debe crearse en lenguajes como C/C++ y Java.

1. Crear una cola FIFO

// Initialize queue
Syntax: queue.Queue(maxsize)

// Insert Element
Syntax: Queue.put(data)

// Get And remove the element
Syntax: Queue.get()

Inicializa una variable a un tamaño máximo de maxsize. Un tamaño máximo de cero ‘0’ significa una cola infinita. Esta cola sigue la regla FIFO. Este módulo también tiene una cola LIFO, que es básicamente una pila. Los datos se insertan en Queue usando put() y el final. get() toma datos del frente de la Cola. Tenga en cuenta que tanto put() como get() toman 2 parámetros más, banderas opcionales, bloqueo y tiempo de espera.

import queue
  
# From class queue, Queue is
# created as an object Now L
# is Queue of a maximum 
# capacity of 20
L = queue.Queue(maxsize=20)
  
# Data is inserted into Queue
# using put() Data is inserted
# at the end
L.put(5)
L.put(9)
L.put(1)
L.put(7)
  
# get() takes data out from
# the Queue from the head 
# of the Queue
print(L.get())
print(L.get())
print(L.get())
print(L.get())

Producción:

5
9
1
7

2. UnderFlow y OverFlow
Cuando tratamos de agregar datos en una cola superior a maxsize, se llama OverFlow (Queue Full) y cuando intentamos eliminar un elemento de un vacío, se llama Underflow. put() y get() no dan error en Underflow y Overflow, sino que entran en un bucle infinito.

import queue
  
L = queue.Queue(maxsize=6)
  
# qsize() give the maxsize
# of the Queue
print(L.qsize())
  
L.put(5)
L.put(9)
L.put(1)
L.put(7)
  
# Return Boolean for Full
# Queue
print("Full: ", L.full())
  
L.put(9)
L.put(10)
print("Full: ", L.full())
  
print(L.get())
print(L.get())
print(L.get())
  
# Return Boolean for Empty
# Queue
print("Empty: ", L.empty())
  
print(L.get())
print(L.get())
print(L.get())
  
print("Empty: ", L.empty())
print("Full: ", L.full())
  
# This would result into Infinite
# Loop as the Queue is empty.
# print(L.get())

Producción:

0
Full:  False
Full:  True
5
9
1
Empty:  False
7
9
10
Empty:  True
Full:  False

3. Pila
Esta cola de módulo también proporciona cola LIFO que técnicamente funciona como una pila.

import queue
  
L = queue.LifoQueue(maxsize=6)
  
# qsize() give the maxsize of
# the Queue
print(L.qsize())
  
# Data Inserted as 5->9->1->7, 
# same as Queue
L.put(5)
L.put(9)
L.put(1)
L.put(7)
L.put(9)
L.put(10)
print("Full: ", L.full())
print("Size: ", L.qsize())
  
# Data will be accessed in the
# reverse order Reverse of that
# of Queue
print(L.get())
print(L.get())
print(L.get())
print(L.get())
print(L.get())
print("Empty: ", L.empty())

Producción:

0
Full:  True
Size: 6
10
9
7
1
9
Empty:  False

Referencia:
https://docs.python.org/3/library/asyncio-queue.html

Publicación traducida automáticamente

Artículo escrito por piyushdoorwar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *