Deque en Python – Tutorial con ejemplos

Deque en Python – Tutorial con ejemplos

Si es un desarrollador de Python, es probable que haya oído hablar de una deque o "cola de dos extremos". Es una poderosa herramienta que puede aumentar la eficiencia de su aplicación y acelerar su rendimiento.

Un deque es un tipo de datos de contenedor especializado que ofrece operaciones de adición y extracción más rápidas desde ambos extremos del contenedor. Esto lo convierte en una herramienta valiosa para implementar colas y pilas, que son tipos de datos similares a listas comunes en informática.

Es una estructura de datos de bajo nivel y altamente optimizada que es muy útil para una variedad de aplicaciones. Como programador de Python, un deque es una herramienta que querrás tener en tu arsenal.

¡Siga leyendo para obtener más información sobre Deques y cómo puede implementarlos en su código Python !

Deque en Python – Tutorial con ejemplos

Tabla de contenido

¿Qué es un Deque?

Si eres nuevo en Python o en la programación de computadoras en general, es posible que te preguntes qué es un deque. Deque significa " cola de dos extremos ", y es una estructura de datos que le permite agregar y eliminar elementos de ambos extremos de la cola.

Es similar a una cola regular pero con la flexibilidad añadida de poder agregar y eliminar elementos de la parte delantera y trasera de la cola. Esto es posible porque la deque de Python se implementa como una lista doblemente enlazada.

En Python, los deques se implementan mediante el módulo de colecciones, que proporciona una clase deque. Esta clase proporciona una serie de métodos para agregar y eliminar elementos de la deque.

También proporciona funciones para otras operaciones útiles, como rotar el deque o borrarlo por completo.

Características de A Python Deque

A diferencia de una lista normal, que tiene una complejidad de tiempo O(n) para las operaciones de agregar y sacar, una deque proporciona una complejidad de tiempo O(1). Esto lo hace significativamente más rápido y eficiente en memoria para estas operaciones de lectura y escritura.

Aquí hay algunas características más de deque de Python que debe conocer:

  • Es una estructura de datos mutable.

  • Puede almacenar múltiples tipos de datos, por ejemplo, enteros, tuplas, matrices, etc.

  • Admite operaciones de indexación, pero no de corte.

  • No es compatible con la clasificación en el lugar

  • Admite funciones y operaciones iterables integradas comunes como in , sorted() , len() , reverse() , etc.

Aplicaciones de A Deque

Los deques son útiles por una variedad de razones. Por ejemplo, se pueden usar para implementar una cola o una pila, las cuales son estructuras de datos comunes en informática.

También se pueden usar para procesar datos de manera eficiente en tiempo real, como en aplicaciones de transmisión o en sistemas que requieren un acceso rápido a los datos.

Además de usarse para colas y pilas, deques también se puede usar para implementar algoritmos de búsqueda en amplitud. También son útiles para mantener una ventana deslizante de elementos en una secuencia mayor.

Cómo crear e inicializar un Deque

Puede crear una deque usando una función integrada del módulo de colecciones. Echemos un vistazo de cerca a cómo puede crear y completar esta estructura de datos.

Usando la función deque()

Para crear una deque en Python, puede usar la función integrada deque() del módulo de colecciones. Esta función devuelve un nuevo objeto deque vacío que puede usar para implementar una cola de dos extremos.

Aquí hay un ejemplo de cómo crear un objeto deque vacío:

from collections import deque 

my_deque = deque() 

También puede crear una deque con elementos iniciales pasando un iterable (lista, tupla, etc.) a la función deque() . El deque se inicializará con los elementos del iterable, de izquierda a derecha.

Aquí hay un ejemplo:

from collections import deque

my_list = [1, 2, 3, 4, 5] 
my_deque = deque(my_list)

Inicializar un Deque con elementos

También puede inicializar un deque vacío con elementos usando varios métodos. Una forma de hacer esto es usar los métodos append() y appendleft() para agregar elementos a la deque desde los lados derecho e izquierdo, respectivamente.

Aquí hay un ejemplo:

from collections import deque

#Initialize the empty deque
my_deque = deque()
print(my_deque)

#Add Values to the deque
my_deque.append(1) 
my_deque.append(2) 
my_deque.appendleft(3) 

print(my_deque)

Después de ejecutar este código, el deque contendrá los elementos [3, 1, 2].

Deque en Python – Tutorial con ejemplos

Otra forma de inicializar un deque con elementos es pasar una lista de elementos a la función deque() .

Aquí hay un ejemplo:

from collections import deque

my_deque = deque([1, 2, 3]) 

Ejecutar este código creará un objeto deque que contiene los elementos [1, 2, 3] .

En general, crear e inicializar un deque en Python es sencillo y se puede hacer usando la función integrada deque() . También puede hacer esto agregando elementos a un deque vacío usando los métodos append() y appendleft() .

Cómo realizar operaciones comunes de Deque

Hay muchas operaciones que puede realizar en objetos deque en Python. Veamos algunos de los más populares.

Adición de elementos a un deque

Puede agregar elementos a una deque de Python usando los métodos append() y appendleft() . El método append() agrega un elemento al extremo derecho de la deque mientras que el método appendleft() agrega un elemento al extremo izquierdo de la deque.

Aquí hay un ejemplo:

import collections 

# Create an empty deque 
my_deque = collections.deque() 

# Add elements to the deque 
my_deque.append(1) 
my_deque.appendleft(2) 
my_deque.append(3) 

print(my_deque) 

# Output: 
deque([2, 1, 3])

Adición de múltiples elementos de datos a una deque

Si no desea agregar elementos de datos a una deque uno por uno, puede acelerar el proceso con las funciones extend() o extendleft() . Estas funciones toman un iterable y agregan el contenido del iterable al final o al final izquierdo del deque respectivamente.

Aquí hay un ejemplo:

from collections import deque

my_list = [1, 2, 3, 4, 5] 
my_deque = deque(my_list)

#Creating a tuple and list
cont = (11, 12, 13, 14)
full = [10,20,30]

#Extending the deque from the right
my_deque.extend(cont)
print(my_deque)

#Extending the deque from the left
my_deque.extendleft(full)
print(my_deque)

En el código anterior, la función extend() agrega los valores múltiples en la tupla continua al final de la deque. A continuación, la función extendleft() agrega los múltiples elementos de datos en la lista completa al extremo izquierdo de la cola.

Deque en Python – Tutorial con ejemplos

Eliminación de elementos de un deque

Puede eliminar elementos de una deque de Python utilizando los métodos pop() y popleft() . El método pop() elimina y devuelve el elemento más a la derecha de la deque, mientras que el método popleft() elimina y devuelve el elemento más a la izquierda de la deque.

Aquí hay un ejemplo:

import collections 

#Create a deque with some elements 
my_deque = collections.deque([1, 2, 3, 4, 5]) 

#Remove elements from the deque 
my_deque.pop() 
my_deque.popleft() 

print(my_deque) 

# Output: deque([2, 3, 4])

También puede eliminar un valor específico de una deque usando la función remove() . La función elimina la primera aparición del valor especificado de la deque.

Aquí hay un ejemplo:

import collections 

#Create a deque with some elements 
my_deque = collections.deque([1, 2, 1, 4, 5]) 

#Remove elements from the deque 
my_deque.remove(1)

print(my_deque) 

# Output: deque([2, 1, 4, 5])

Si no se encuentra el elemento, Python devolverá un ValueError .

Quitar todos los elementos de un deque

Para eliminar todos los elementos de un Deque y devolverlo a un estado vacío, podemos usar la función clear() . Así es como funciona:

from collections import deque 

#Create a deque with some elements 
my_deque = deque([1, 2, 1, 4, 5]) 

#Remove all elements from the deque 
my_deque.clear()

print(my_deque) 

# Output: 
deque([])

Accessing Elements of a Deque

You can access elements of a Python deque using the indexing operator []. You can also use a negative value in the indexing operator to access the deque elements from the right.

The indexing starts from 0 for the leftmost element and -1 for the rightmost element. Here’s an example:

import collections 

# Create a deque with some elements 
my_deque = collections.deque([1, 2, 3, 4, 5]) 

# Access elements of the deque 
print(my_deque[0]) 
# Output: 1 

print(my_deque[-1]) 
# Output: 5 

Modifying Elements of a Deque

You can modify elements of a Python deque using the indexing operator “[]” and the assignment operator “=“. Here’s an example:

from collections import deque

# Create a deque with some elements 
my_deque = deque([1, 2, 3, 4, 5]) 
print(my_deque)

# Modify elements of the deque 
my_deque[0] = 10 
my_deque[-1] = 50 

print(my_deque) 

In the above code, the indexing operator changes the first and last elements of the deque to 10 and 50 respectively.

Deque en Python – Tutorial con ejemplos

These are the basic operations you can perform on a deque object in Python. With these operations, you can efficiently implement various data structures such as queues, stacks, and more.

How to Work with a Deque as a Queue

You can use a deque in Python to implement a queue data structure. A queue is an abstract data type that operates on a first in first out (FIFO) basis.

What this means is that you can append new items from one end of the queue and push out old items from the other end.

A good way to explain this is a line at a store. Typically, the first person to arrive will be at the head of the line and will be attended to first.

New arrivals will have to head to the back of the line and wait their turn. So, the first in will be the first answered, while the last in will be the last attended to.

Here’s how you can use a deque to implement queues.

Using append() and popleft() Methods

Para usar un deque como una cola, puede usar el método append() para agregar elementos al extremo derecho del deque. Además, puede usar el método popleft() para eliminar elementos del extremo izquierdo de la deque.

Esta es una forma muy eficiente de implementar una cola en Python. Aquí hay un ejemplo:

from collections import deque 

queue = deque() 
queue.append(1) 
queue.append(2) 
queue.append(3) 

print(queue) 
# Output: deque([1, 2, 3]) 

x = queue.popleft() 
print(x) 
# Output: 1 

print(queue) 
# Output: deque([2, 3]) 

Como puede ver, el método append() agrega elementos al extremo derecho de la deque, y el método popleft() elimina elementos del extremo izquierdo de la deque.

Esto es exactamente lo que necesitamos en una implementación de cola.

Comprobar si una cola Deque está vacía

Para verificar si un deque está vacío, puede usar el operador not . Aquí hay un ejemplo:

from collections import deque 

queue = deque() 
if not queue: 
   print("Queue is empty") 
else: 
   print("Queue is not empty") 

Esto generará " La cola está vacía " porque el deque está vacío. Si agrega elementos al deque, ya no estará vacío.

En conclusión, usar un deque como cola en Python es muy eficiente y fácil de implementar.

Trabajar con Deque como una pila

Al igual que las colas, las pilas son otro ejemplo de tipos de datos abstractos que puede usar para organizar datos. A diferencia de las colas, las pilas funcionan según la modalidad de último en entrar, primero en salir (LIFO).

Esto significa que el último elemento en el deque será el primero en salir. Así es como puede implementar esto utilizando la estructura de datos subyacente.

Uso de los métodos append() y pop()

Cuando usa Deque como una pila, puede agregar elementos a la parte superior de la pila usando el método append() . Este método agrega el elemento al extremo derecho de la deque.

De manera similar, puede eliminar elementos de la parte superior de la pila utilizando el método pop() . Este método elimina y devuelve el elemento más a la derecha de la deque.

Por ejemplo, supongamos que tiene un deque llamado " my_stack " y desea agregar un elemento en la parte superior de la pila. Puedes usar el siguiente código:

 my_stack.append(5) 

Esto agregará el elemento 5 a la parte superior de la pila.

Si desea eliminar el elemento superior de la pila, puede usar el método pop(): `

bal = my_stack.pop() 

print(bal)
# Output: 5

Esto eliminará y devolverá el elemento más a la derecha del deque, que en este caso es 5.

Comprobación de un objeto Deque vacío

Puede verificar si una pila deque está vacía usando el operador booleano " no ". Si el deque está vacío, “ not my_deque ” devolverá True . De lo contrario, devolverá False .

Por ejemplo, supongamos que tiene una pila de deque llamada " my_deque " y desea verificar si está vacía. Puedes usar el siguiente código:

if not my_deque: 
   print("The deque is empty") 

else: 
   print("The deque is not empty") 

Esto imprimirá " El deque está vacío " si el deque está vacío. Si no está vacío, la salida será " El deque no está vacío ".

Cuando se trabaja con Deque como una pila, es importante realizar un seguimiento de si la pila está vacía o no. Si intenta extraer un elemento de una pila vacía, obtendrá un IndexError .

¿Qué es un deque restringido?

Una deque restringida es una cola de dos extremos con algunas restricciones en las operaciones de adición y extracción de datos en cada extremo de la deque. Hay dos tipos principales de deques restringidos; Entrada restringida deque y salida restringida deques

Veámoslos:

Entrada restringida Deque

Una deque de entrada restringida le permite extraer o eliminar elementos de datos de ambos extremos de la deque. Sin embargo, solo puede insertar elementos de datos desde un extremo de la deque.

Esto es muy útil en aplicaciones con limitaciones de memoria. Puede usarlo para agregar elementos de datos en orden cronológico mientras conserva la capacidad de descartar datos de cualquier extremo de la deque.

Salida restringida Deque

Una deque de salida restringida le permite insertar datos desde ambos extremos de la deque. Sin embargo, solo puede eliminar elementos de un extremo del deque llamado front-end.

Una deque de salida restringida es muy útil en los casos en que necesita implementar una estructura de datos FIFO, pero aún desea que la funcionalidad agregue datos de ambos extremos.

Vamos a terminar esto

A estas alturas, debería tener una buena comprensión del módulo deque en Python y cómo se puede usar para implementar colas y pilas eficientes.

Deques es una estructura de datos versátil que ofrece muchas ventajas sobre las listas tradicionales. Estas ventajas son evidentes cuando se trata de operaciones pop y append eficientes en memoria.

También son una excelente opción cuando necesita implementar una pila o una cola de dos extremos. Algunos de los beneficios clave de usar deques incluyen:

  • Eficientes operaciones O(1) append y pop desde ambos extremos de la deque

  • Acceso rápido O(1) al primer y último elemento del deque

  • Compatibilidad integrada para operaciones atómicas seguras para subprocesos

  • Métodos flexibles para insertar, quitar y rotar elementos en el deque

En general, el módulo deque es una herramienta poderosa que puede ayudarlo a escribir código de Python más eficiente y fácil de mantener. Ya sea que esté trabajando en un script pequeño o en un proyecto a gran escala, definitivamente vale la pena considerar deques como una alternativa a las listas tradicionales u otras estructuras de datos.

Listo para aprender más sobre Python, consulte nuestra lista de reproducción a continuación


Qué es uno mismo en Python: ejemplos del mundo real

Qué es uno mismo en Python: ejemplos del mundo real

Qué es uno mismo en Python: ejemplos del mundo real

Cómo guardar y cargar un archivo RDS en R

Cómo guardar y cargar un archivo RDS en R

Aprenderá a guardar y cargar objetos desde un archivo .rds en R. Este blog también cubrirá cómo importar objetos desde R a LuckyTemplates.

Revisión de los primeros N días hábiles: una solución de lenguaje de codificación DAX

Revisión de los primeros N días hábiles: una solución de lenguaje de codificación DAX

En este tutorial del lenguaje de codificación DAX, aprenda a usar la función GENERAR y a cambiar dinámicamente el título de una medida.

Showcase Insights utilizando la técnica de elementos visuales dinámicos de subprocesos múltiples en LuckyTemplates

Showcase Insights utilizando la técnica de elementos visuales dinámicos de subprocesos múltiples en LuckyTemplates

Este tutorial cubrirá cómo usar la técnica de elementos visuales dinámicos de subprocesos múltiples para crear información a partir de visualizaciones de datos dinámicos en sus informes.

Introducción al contexto de filtro en LuckyTemplates

Introducción al contexto de filtro en LuckyTemplates

En este artículo, repasaré el contexto del filtro. El contexto del filtro es uno de los temas principales que cualquier usuario de LuckyTemplates debería conocer inicialmente.

Los mejores consejos para usar las aplicaciones en el servicio en línea de LuckyTemplates

Los mejores consejos para usar las aplicaciones en el servicio en línea de LuckyTemplates

Quiero mostrar cómo el servicio en línea de LuckyTemplates Apps puede ayudar a administrar diferentes informes e información generada a partir de varias fuentes.

Analice los cambios en el margen de beneficio a lo largo del tiempo: análisis con LuckyTemplates y DAX

Analice los cambios en el margen de beneficio a lo largo del tiempo: análisis con LuckyTemplates y DAX

Aprenda a calcular los cambios de su margen de beneficio utilizando técnicas como la bifurcación de medidas y la combinación de fórmulas DAX en LuckyTemplates.

Ideas de materialización para cachés de datos en DAX Studio

Ideas de materialización para cachés de datos en DAX Studio

Este tutorial analizará las ideas de materialización de cachés de datos y cómo afectan el rendimiento de DAX al proporcionar resultados.

Informes comerciales con LuckyTemplates

Informes comerciales con LuckyTemplates

Si todavía usa Excel hasta ahora, este es el mejor momento para comenzar a usar LuckyTemplates para sus necesidades de informes comerciales.

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber