logo

Y en Python

Un deque significa cola de doble extremo. Es un tipo especial de estructura de datos que le permite agregar y eliminar elementos de ambos extremos de manera eficiente.

A diferencia de las colas normales (que generalmente siguen el orden de entrada, primero en salir), una deque admite operaciones FIFO y LIFO. Esto lo hace muy flexible y útil en aplicaciones del mundo real, como la programación de tareas, problemas de ventanas deslizantes y procesamiento de datos en tiempo real.



Ejemplo:

Python
from collections import deque # Declaring deque  de = deque(['name''age''DOB']) print(de) 

Producción
deque(['name' 'age' 'DOB']) 
Por lo tanto' title=

¿Por qué necesitamos deque?

  • Admite tiempo O(1) para agregar/eliminar elementos de ambos extremos.
  • Es más eficiente que las listas para operaciones de front-end.
  • Puede funcionar como cola (FIFO) y como pila (LIFO).
  • Ideal para programar problemas de ventanas deslizantes y procesamiento de datos en tiempo real.
  • Ofrece potentes métodos integrados como anexar a la izquierda() popizquierda() y girar().

Tipos de entrada deque restringida

  • Deque restringido de entrada :  La entrada está limitada en un extremo, mientras que se permite la eliminación en ambos extremos.
  • Salida restringida Deque : la salida está limitada en un extremo pero se permite la inserción en ambos extremos.

Operaciones en deque 

Aquí hay una tabla que enumera las operaciones integradas de una deque en Python con descripciones y sus correspondientes complejidades temporales:

descargar videos de youtube en vlc
Operación Descripción Complejidad del tiempo
agregar(x) Agregaxal extremo derecho del deque.O(1)
anexar a la izquierda (x) Agregaxal extremo izquierdo del deque.O(1)
estallido() Elimina y devuelve un elemento del extremo derecho del deque.O(1)
popizquierda() Elimina y devuelve un elemento del extremo izquierdo del deque.O(1)
extender (iterable) Agrega todos los elementos deiterableal extremo derecho del deque.Está bien)
extender a la izquierda (iterable) Agrega todos los elementos deiterableal extremo izquierdo del deque (orden inverso).Está bien)
eliminar (valor) Elimina la primera aparición devaluedel deque. aumentosValueErrorsi no se encuentra.En)
rotar(n) Gira el dequenpasos a la derecha. Sines negativo gira hacia la izquierda.Está bien)
claro() Elimina todos los elementos del deque.En)
contar(valor) Cuenta el número de ocurrencias devalueen el deque.En)
índice (valor) Devuelve el índice de la primera aparición devalueen el deque. aumentosValueErrorsi no se encuentra.En)
contrarrestar() Invierte los elementos del deque en su lugar.En)

Agregar y eliminar elementos de la cola

  • añadir(x): Agrega x al extremo derecho del deque.
  • anexar a la izquierda (x): Agrega x al extremo izquierdo del deque.
  • extender (iterable): Agrega todos los elementos desde el iterable hasta el extremo derecho.
  • extenderizquierda(iterable): Agrega todos los elementos desde el iterable hasta el extremo izquierdo (en orden inverso).
  • eliminar (valor): Elimina la primera aparición del valor especificado de la deque. Si no se encuentra el valor, genera un ValueError.
  • estallido(): Elimina y devuelve un elemento desde el extremo derecho.
  • popizquierda(): Elimina y devuelve un elemento del extremo izquierdo.
  • claro(): Elimina todos los elementos del deque.
Python
from collections import deque dq = deque([10 20 30]) # Add elements to the right dq.append(40) # Add elements to the left dq.appendleft(5) # extend(iterable) dq.extend([50 60 70]) print('After extend([50 60 70]):' dq) # extendleft(iterable) dq.extendleft([0 5]) print('After extendleft([0 5]):' dq) # remove method dq.remove(20) print('After remove(20):' dq) # Remove elements from the right dq.pop() # Remove elements from the left dq.popleft() print('After pop and popleft:' dq) # clear() - Removes all elements from the deque dq.clear() # deque: [] print('After clear():' dq) 

Producción:

After extend([50 60 70]): deque([5 10 20 30 40 50 60 70])  
After extendleft([0 5]): deque([5 0 5 10 20 30 40 50 60 70])
After remove(20): deque([5 0 5 10 30 40 50 60 70])
After pop and popleft: deque([0 5 10 30 40 50 60])
After clear(): deque([])

Acceso al elemento y duración del deque

  • Indexación: Accede a elementos por posición mediante índices positivos o negativos.
  • solo(): Devuelve el número de elementos del deque.
Python
import collections dq = collections.deque([1 2 3 3 4 2 4]) # Accessing elements by index print(dq[0]) print(dq[-1]) # Finding the length of the deque print(len(dq)) 

Producción
1 4 7 

Contar la rotación y la inversión de un deque

  • contar(valor): Este método cuenta el número de apariciones de un elemento específico en la deque.
  • rotar(n): Este método rota el deque en n pasos. El n positivo gira hacia la derecha y el n negativo gira hacia la izquierda.
  • contrarrestar(): Este método invierte el orden de los elementos en el deque.
Python
from collections import deque # Create a deque dq = deque([10 20 30 40 50 20 30 20]) # 1. Counting occurrences of a value print(dq.count(20)) # Occurrences of 20 print(dq.count(30)) # Occurrences of 30 # 2. Rotating the deque dq.rotate(2) # Rotate the deque 2 steps to the right print(dq) dq.rotate(-3) # Rotate the deque 3 steps to the left print(dq) # 3. Reversing the deque dq.reverse() # Reverse the deque print(dq) 

Producción
3 2 deque([30 20 10 20 30 40 50 20]) deque([20 30 40 50 20 30 20 10]) deque([10 20 30 20 50 40 30 20])