E in Python

E in Python

Una deque sta per Double-Ended Queue. È un tipo speciale di struttura dati che consente di aggiungere e rimuovere elementi da entrambe le estremità in modo efficiente.

A differenza delle code normali (che di solito seguono First In First Out) una deque supporta sia le operazioni FIFO che LIFO. Ciò lo rende molto flessibile e utile nelle applicazioni del mondo reale come la pianificazione delle attività, i problemi della finestra scorrevole e l'elaborazione dei dati in tempo reale.

Esempio:

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

Produzione
deque(['name' 'age' 'DOB'])  
Perciò

  • Supporta il tempo O(1) per aggiungere/rimuovere elementi da entrambe le estremità.
  • È più efficiente degli elenchi per le operazioni front-end.
  • Può funzionare sia come coda (FIFO) che come stack (LIFO).
  • Ideale per la pianificazione dei problemi delle finestre scorrevoli e l'elaborazione dei dati in tempo reale.
  • Offre potenti metodi integrati come E ruotare().

Tipi di input deque limitati

  • :  L'immissione è limitata a un'estremità mentre l'eliminazione è consentita a entrambe le estremità.
  • : l'uscita è limitata ad un'estremità ma l'inserimento è consentito ad entrambe le estremità.

Ecco una tabella che elenca le operazioni integrate di una deque in Python con le descrizioni e le relative complessità temporali:

Operazione Descrizione
Aggiunge x all'estremità destra della deque. O(1)
aggiungi a sinistra(x) Aggiunge x all'estremità sinistra della deque.
pop() Rimuove e restituisce un elemento dall'estremità destra della deque.
popleft() Rimuove e restituisce un elemento dall'estremità sinistra della deque.
Aggiunge tutti gli elementi da iterable all'estremità destra della deque. Bene)
iterable all'estremità sinistra della deque (ordine invertito). Bene)
Rimuove la prima occorrenza di value from the deque. Alza ValueError SU)
ruotare(n) n steps to the right. Se n è negativo ruota a sinistra. Bene)
chiaro() Rimuove tutti gli elementi dalla deque. SU)
conteggio(valore) Conta il numero di occorrenze di value nella deque. SU)
Restituisce l'indice della prima occorrenza di value nella deque. Alza ValueError SU)
inversione() Inverte gli elementi della deque in atto. SU)

Aggiunta ed eliminazione di elementi di rimozione dalla coda

  • aggiungere(x): Aggiunge x all'estremità destra della deque.
  • Aggiunge x all'estremità sinistra della deque.
  • estendere(iterabile): Aggiunge tutti gli elementi dall'iterabile all'estremità destra.
  • extendleft(iterabile): Aggiunge tutti gli elementi dall'iterabile all'estremità sinistra (in ordine inverso).
  • rimuovi(valore): Rimuove la prima occorrenza del valore specificato dalla deque. Se il valore non viene trovato, viene generato un ValueError.
  • pop(): Rimuove e restituisce un elemento dall'estremità destra.
  • popleft(): Rimuove e restituisce un elemento dall'estremità sinistra.
  • chiaro(): Rimuove tutti gli elementi dalla 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  )   

Produzione:

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

Accesso all'elemento e lunghezza della deque

  • Indicizzazione: Accedi agli elementi per posizione utilizzando indici positivi o negativi.
  • soltanto(): Restituisce il numero di elementi nella 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  ))   

Produzione
1 4 7  

Conteggio Rotazione e Inversione di una deque

  • conteggio(valore): Questo metodo conta il numero di occorrenze di un elemento specifico nella deque.
  • ruotare(n): Questo metodo ruota la deque di n passi. La n positiva ruota a destra e la n negativa ruota a sinistra.
  • inversione(): Questo metodo inverte l'ordine degli elementi nella 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  )   

Produzione
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])