jueves, marzo 28, 2024
No menu items!
InicioBlogsComprender la implementación de Queue en Python

Comprender la implementación de Queue en Python

Las estructuras de datos juegan un papel clave en el mundo de la programación. Nos ayudan a organizar nuestros datos de una manera que se puede utilizar de manera eficiente. los Cola es una de las estructuras de datos más simples disponibles.

En este artículo aprenderemos sobre la Cola y su implementación en Python.

¿Qué es una cola?

A Cola es una estructura de datos lineal que sigue la Primero en entrar/primero en salir (FIFO) principio. Es lo opuesto a la estructura de datos Stack.

Podemos comparar el cola con una vida real cola en la taquilla del cine. Veamos la ilustración de una cola de la siguiente manera.

Si observa la cola en el mostrador, la segunda persona puede ir al mostrador solo después de que la primera persona complete su trabajo. Aquí la primera persona llega al mostrador y luego la segunda persona. Entonces, aquí la gente está siguiendo el FIFO (primero en entrar/primero en salir) principio. Quien llegue primero, él / ella completará el trabajo primero. Podemos ver un tipo similar de colas en nuestra vida cotidiana.

los Cola la estructura de datos también sigue el mismo principio. Ahora ya sabes qué son las colas y su principio. Veamos las operaciones que se pueden realizar en un cola estructura de datos.

Operaciones en cola

De manera similar a la pila, encontraremos dos operaciones principales en una cola estructura de datos.

poner en cola (datos)

Agrega nuevos datos a la cola al final. El lado se llama trasero.

sacar de la cola()

Elimina los datos del principio de la cola. El lado se llama parte delantera.

Veamos las ilustraciones de las operaciones de cola para una mejor comprensión. Una imagen habla más que mil palabras.

Podemos escribir algunas funciones auxiliares para obtener más información sobre la cola. No hay límite en el número de funciones auxiliares que tendrá. Por ahora, ceñámonos a los más importantes que se mencionan a continuación.

trasero()

Devuelve el primer elemento del final de la cola.

parte delantera()

Devuelve el primer elemento desde el principio de la cola.

esta vacio()

Devuelve si la cola está vacía o no.

¿No es aburrido para ti? Me refiero a los temas conceptuales.

Para mi ¡Sí!

Pero, no podemos hacer nada sin conocer los conceptos. Tenemos que saberlo completamente antes de la implementación. No te preocupes, es hora de ensuciarnos las manos con algún código.

Supongo que tiene Python instalado en su PC, si no, también puede probar el compilador en línea.

🔥 Leer:  Guía de implementación del sistema de gestión de contratistas

Implementación de cola

Implementar una cola no le tomará más de 15 minutos a un programador. Una vez que aprendiste, lo dirás. Tal vez puedas implementarlo en minutos después de este tutorial.

Hay varias formas de implementar la cola en Python. Veamos diferentes implementaciones de colas paso a paso.

#1. Lista

La lista es un tipo de datos integrado en Python. Vamos a utilizar el tipo de datos de lista para implementar un cola en una clase Lo guiaremos a través de diferentes pasos para implementar la estructura de datos de la cola desde cero sin ningún módulo. Saltemos a ello.

Paso 1:

Escribe una clase llamada Cola.

class Queue:
	pass

Paso 2:

Tiene que haber alguna variable para almacenar los datos de la cola en la clase. vamos a nombrarlo elementos. Y es una lista, por supuesto.

class Queue:

	def __init__(self):
		self.elements = []

Paso 3:

Para insertar datos en la cola, necesitamos un método en la clase. El método se llama poner en cola como ya discutimos en la sección anterior del tutorial.

El método toma algunos datos y los agrega a la cola (elementos). Podemos usar el adjuntar método del tipo de datos de lista para agregar datos al final de la cola.

class Queue:

	# ...

	def enqueue(self, data):
		self.elements.append(data)
		return data

Etapa 4:

La cola debe tener una salida. y eso se llama sacar de la cola. Creo que ya adivinaste que vamos a usar el método pop del tipo de datos de lista. Si lo adivinaste o no, salud!

El método pop del tipo de datos de lista elimina un elemento de la lista del índice dado. Si no le dimos ningún índice, entonces elimina el último elemento de la lista.

Aquí, necesitamos eliminar el primer elemento de la lista. Entonces, tenemos que pasar el índice 0 al método pop.

class Queue:

	# ...

	def dequeue(self):
		return self.elements.pop(0)

Eso es suficiente para una cola. Pero necesitamos las funciones auxiliares para probar si las operaciones de la cola funcionan correctamente o no. Escribamos también las funciones auxiliares.

Paso 5:

El método trasero() se utiliza para obtener el último elemento de la cola. La indexación negativa en el tipo de datos de lista nos ayuda a obtener el último elemento de la cola.

class Queue:

	# ...

	def rear(self):
		return self.elements[-1]

Paso 6:

El método parte delantera() se utiliza para obtener el primer elemento de la cola. Podemos obtener el primer elemento de la cola usando el índice de la lista.

class Queue:

	# ...

	def front(self):
		return self.elements[0]

Paso 7:

El método esta vacio() se utiliza para comprobar si la cola está vacía o no. Podemos comprobar la longitud de la lista.

class Queue:

	# ...

	def is_empty(self):
		return len(self.elements) == 0

¡Uf! completó la parte de implementación del cola estructura de datos. Necesitamos crear un objeto para el Cola clase a utilizar.

🔥 Leer:  Ahorre 92% completando el Paquete de preparación para la certificación Microsoft Azure 2019

Vamos a hacerlo.

class Queue:

	# ...

if __name__ == '__main__':
	queue = Queue()

Ahora, tenemos un Cola objeto. Vamos a probarlo con una serie de operaciones.

Compruebe si la cola está vacía o no utilizando el esta vacio método. debería volver Cierto. Suma los números 1, 2, 3, 4, 5 al cola utilizando el poner en cola método. los esta vacio el método debe regresar Falso. Revisalo. Imprime el parte delantera y trasero elementos usando el parte delantera y trasero métodos respectivamente. Eliminar el elemento de la cola usando el sacar de la cola método. Comprobar el parte delantera elemento. Debería devolver el elemento. 2. Ahora, elimine todos los elementos de la cola. los esta vacio el método debe regresar Cierto. Revisalo.

Creo que eso es suficiente para probar nuestra implementación de colas. Escriba el código para cada paso mencionado anteriormente para probar la cola.

¿Escribiste el código?

No, no te preocupes.

Verifique el código a continuación.

class Queue:

	def __init__(self):
		self.elements = []

	def enqueue(self, data):
		self.elements.append(data)
		return data

	def dequeue(self):
		return self.elements.pop(0)

	def rear(self):
		return self.elements[-1]

	def front(self):
		return self.elements[0]

	def is_empty(self):
		return len(self.elements) == 0

if __name__ == '__main__':
	queue = Queue()

	## checking is_empty method -> True
	print(queue.is_empty())

	## adding the elements
	queue.enqueue(1)
	queue.enqueue(2)
	queue.enqueue(3)
	queue.enqueue(4)
	queue.enqueue(5)

	## again checking is_empty method -> False
	print(queue.is_empty())

	## printing the front and rear elements using front and rear methods respectively -> 1, 5
	print(queue.front(), end=' ')
	print(queue.rear())

	## removing the element -> 1
	queue.dequeue()

	## checking the front and rear elements using front and rear methods respectively -> 2 5
	print(queue.front(), end=' ')
	print(queue.rear())

	## removing all the elements
	queue.dequeue()
	queue.dequeue()
	queue.dequeue()
	queue.dequeue()

	## checking the is_empty method for the last time -> True
	print(queue.is_empty())

Creo que ejecutas el programa anterior. Puede obtener una salida similar al siguiente resultado.

True
False
1 5
2 5
True

Podemos usar directamente el lista tipo de datos como cola estructura de datos. La implementación anterior de la cola lo ayuda a comprender mejor la implementación de la cola en otros lenguajes de programación.

También puede usar la implementación de clase anterior de un cola en un programa diferente de un proyecto simplemente creando el objeto como lo hicimos antes.

Hemos implementado el cola desde cero utilizando el tipo de datos de lista. ¿Hay módulos integrados para la cola? ¡Si! tenemos implementaciones de cola integradas. Veámoslos.

#2. deque de colecciones

Se implementa como una cola de dos extremos. Dado que admite la adición y eliminación de elementos de ambos extremos, podemos usarlo como un apilar y cola. Veamos la implementación de la cola usando sacar de la cola.

Se implementa usando otras estructuras de datos llamadas doblemente vinculado lista. Entonces, el rendimiento de la inserción y eliminación de elementos es consistente. Acceder a los elementos de la lista enlazada del medio tomó En) hora. Podemos usarlo como un cola ya que no hay necesidad de acceder a los elementos intermedios desde el cola.

🔥 Leer:  ¿Por qué está desactivado el cortafuegos de Avast Internet Security?

Revisemos los diferentes métodos que el sacar de la cola nos ofrece.

agregar (datos) – utilizado para agregar los datos a la cola
popleft() – utilizado para eliminar el primer elemento de la cola

No existen métodos alternativos para la delantero trasero, y esta vacio. Podemos imprimir toda la cola en lugar de parte delantera y trasero métodos. A continuación, podemos utilizar el Len método para comprobar si el cola está vacío o no.

Hemos seguido una serie de pasos para probar el cola implementación en el anterior. Sigamos la misma serie de pasos aquí también.

from collections import deque

## creating deque object
queue = deque()

## checking whether queue is empty or not -> True
print(len(queue) == 0)

## pushing the elements
queue.append(1)
queue.append(2)
queue.append(3)
queue.append(4)
queue.append(5)

## again checking whether queue is empty or not -> False
print(len(queue) == 0)

## printing the queue
print(queue)

## removing the element -> 1
queue.popleft()

## printing the queue
print(queue)

## removing all the elements
queue.popleft()
queue.popleft()
queue.popleft()
queue.popleft()

## checking the whether queue is empty or not for the last time -> True
print(len(queue) == 0)

Obtendrá un resultado similar a la siguiente salida.

True
False
deque([1, 2, 3, 4, 5])
deque([2, 3, 4, 5])
True

#3. cola de cola

Python tiene un módulo incorporado llamado cola que sirve a una clase llamada Cola para la implementación de la cola. Es similar al que hemos implementado antes.

Primero, veamos diferentes métodos del Cola clase.

poner (datos) – agrega o empuja los datos a la cola
obtener() – elimina el primer elemento de la cola y lo devuelve
vacío() – devuelve si la pila está vacía o no
qtamaño() – devuelve la longitud de la cola.

Implementemos la cola con los métodos anteriores.

from queue import Queue

## creating Queue object
queue_object = Queue()

## checking whether queue is empty or not -> True
print(queue_object.empty())

## adding the elements
queue_object.put(1)
queue_object.put(2)
queue_object.put(3)
queue_object.put(4)
queue_object.put(5)

## again checking whether queue is empty or not -> False
print(queue_object.empty())

## removing all the elements
print(queue_object.get())
print(queue_object.get())
print(queue_object.get())

## checking the queue size
print("Size", queue_object.qsize())

print(queue_object.get())
print(queue_object.get())

## checking the whether queue_object is empty or not for the last time -> True
print(queue_object.empty())

Compruebe la salida del código anterior.

True
False
1
2
3
Size 2
4
5
True

Hay algunos otros métodos en el Cola clase. Puedes explorarlos usando el directorio función incorporada.

Conclusión

Espero que haya aprendido sobre la estructura de datos de la cola y su implementación. Eso es todo por la cola. Puede usar la cola en diferentes lugares donde debe procesarse en FIFO (primero en entrar/primero en salir) pedido. Use la cola en la resolución de problemas cada vez que tenga el caso para usarlo.

¿Interesado en dominar Python? Echa un vistazo a estos recursos de aprendizaje.

Codificación feliz 🙂 👨‍💻

Tabla de contenidos

Toggle

Recomendamos

Populares