E em Python

E em Python

Um deque significa fila dupla. É um tipo especial de estrutura de dados que permite adicionar e remover elementos de ambas as extremidades com eficiência.

Ao contrário das filas normais (que geralmente seguem First In First Out), um deque suporta operações FIFO e LIFO. Isso o torna muito flexível e útil em aplicações do mundo real, como problemas de janela deslizante de agendamento de tarefas e processamento de dados em tempo real.

Exemplo:

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

Saída
deque(['name' 'age' 'DOB'])  
Portanto

Por que precisamos de deque

  • Ele suporta tempo O(1) para adicionar/remover elementos de ambas as extremidades.
  • É mais eficiente que listas para operações front-end.
  • Pode funcionar tanto como fila (FIFO) quanto como pilha (LIFO).
  • Ideal para agendar problemas de janelas deslizantes e processamento de dados em tempo real.
  • Ele oferece métodos integrados poderosos como acrescentar à esquerda() popesquerda() e girar().

Tipos de entrada Deque restrita

  • Deque restrito de entrada : a entrada é limitada em uma extremidade, enquanto a exclusão é permitida em ambas as extremidades.
  • Deque restrito de saída : a saída é limitada em uma extremidade, mas a inserção é permitida em ambas as extremidades.

Operações no deque 

Aqui está uma tabela listando as operações integradas de um deque em Python com descrições e suas complexidades de tempo correspondentes:

Operação Descrição Complexidade de tempo
acrescentar (x) Adiciona x para a extremidade direita do deque. O(1)
anexar à esquerda (x) Adiciona x para a extremidade esquerda do deque. O(1)
pop() Remove e retorna um elemento da extremidade direita do deque. O(1)
popesquerda() Remove e retorna um elemento da extremidade esquerda do deque. O(1)
estender (iterável) Adiciona todos os elementos de iterable para a extremidade direita do deque. Tudo bem)
estender à esquerda (iterável) Adiciona todos os elementos de iterable para a extremidade esquerda do deque (ordem inversa). Tudo bem)
remover(valor) Remove a primeira ocorrência de value do deque. Aumenta ValueError se não for encontrado. Sobre)
girar (n) Gira o deque n passos para a direita. Se n é negativo gira para a esquerda. Tudo bem)
claro() Remove todos os elementos do deque. Sobre)
contagem (valor) Conta o número de ocorrências de value na deque. Sobre)
índice (valor) Retorna o índice da primeira ocorrência de value na deque. Aumenta ValueError se não for encontrado. Sobre)
reverter() Inverte os elementos do deque no lugar. Sobre)

Anexando e excluindo itens retirados da fila

  • acrescentar (x): Adiciona x à extremidade direita do deque.
  • acrescentar à esquerda (x): Adiciona x à extremidade esquerda do deque.
  • estender (iterável): Adiciona todos os elementos do iterável à extremidade direita.
  • estender à esquerda (iterável): Adiciona todos os elementos do iterável à extremidade esquerda (na ordem inversa).
  • remover (valor): Remove a primeira ocorrência do valor especificado do deque. Se o valor não for encontrado, gera um ValueError.
  • pop(): Remove e retorna um elemento da extremidade direita.
  • popesquerda(): Remove e retorna um elemento da extremidade esquerda.
  • claro(): Remove todos os elementos do 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  )   

Saída:

 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([])

Acessando item e comprimento do deque

  • Indexação: Acesse elementos por posição usando índices positivos ou negativos.
  • apenas(): Retorna o número de elementos no 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  ))   

Saída
1 4 7  

Contagem de rotação e reversão de um deque

  • contagem (valor): Este método conta o número de ocorrências de um elemento específico no deque.
  • girar (n): Este método gira o deque em n etapas. N positivo gira para a direita e n negativo gira para a esquerda.
  • reverter(): Este método inverte a ordem dos elementos no 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  )   

Saída
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])