Volver a la página principal
jueves 6 febrero 2025
3

Cómo usar collections.deque en Python

El módulo collections de Python proporciona deque, una estructura optimizada para inserciones y eliminaciones rápidas en ambos extremos, a diferencia de las listas (list), que pueden ser más lentas para estas operaciones debido a la realineación de elementos en memoria.

Ventajas de deque:

  • Operaciones O(1) en ambos extremos (añadir o eliminar).
  • Métodos específicos para colas y pilas, como append(), appendleft(), pop(), popleft(), etc.
  • Soporte para limitar su tamaño con maxlen.

Sintaxis básica

Antes de usar deque, es necesario importarlo desde collections:

from collections import deque

Métodos principales de deque

Método Descripción
append(x) Agrega x al final de la deque.
appendleft(x) Agrega x al inicio de la deque.
pop() Elimina y devuelve el último elemento.
popleft() Elimina y devuelve el primer elemento.
extend(iterable) Agrega múltiples elementos al final.
extendleft(iterable) Agrega múltiples elementos al inicio (en orden inverso).
rotate(n) Rota los elementos n posiciones a la derecha (izquierda si n es negativo).
reverse() Invierte el orden de los elementos.
clear() Elimina todos los elementos de la deque.

Ejemplos de uso

1. Creación de un deque y operaciones básicas

from collections import deque

# Crear una deque con algunos elementos
dq = deque([1, 2, 3])

# Agregar elementos
dq.append(4)       # [1, 2, 3, 4]
dq.appendleft(0)   # [0, 1, 2, 3, 4]

# Eliminar elementos
dq.pop()          # [0, 1, 2, 3] -> devuelve 4
dq.popleft()      # [1, 2, 3] -> devuelve 0

print(dq)  # deque([1, 2, 3])

2. Uso de deque con tamaño máximo (maxlen)

dq = deque(maxlen=3)  # La deque tendrá un tamaño máximo de 3

dq.append(1)
dq.append(2)
dq.append(3)
dq.append(4)  # Se elimina el primer elemento (1) automáticamente

print(dq)  # deque([2, 3, 4], maxlen=3)

3. Rotación de elementos

dq = deque([1, 2, 3, 4, 5])
dq.rotate(2)  # Mueve los últimos 2 elementos al frente

print(dq)  # deque([4, 5, 1, 2, 3])

Referencias

Etiquetas:
python
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer