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