collections.deque()

deque (pronuncia deck) ) è una struttura dati contenuta nel modulo collections.
Realizza una double-ended queue, una coda con accesso da entrambi i lati.
Rispetto a una lista ottimizza le operazioni di inserimento e rimozione sul lato sinistro.

Costruttori

collections.deque()Crea una coda doppia vuota
collections.deque(z)Crea una coda doppia contenente gli elementi presi dall’oggetto iterabile specificato
collections.deque(z, n)Si specifica, con un numero, la lunghezza massima della coda.
Raggiunta la lunghezza massima, per ogni elemento aggiunto verrà eliminato un elemento dalla parte opposta.
...

Operatori

  1. x=d[p], restituisce l’elemento alla posizione p
  2. x in d, appartenenza di x a d
  3. x not in d, NON appartenenza di x a d
  4. n * d, restituisce una coda con gli elementi di d ripetuti n volte
  5. d *= n, aggiorna la coda d con n copie…
  6. d1 + d2, restituisce una coda con gli elementi di d1 seguiti da quelli di d2
  7. d1 += d2, aggiorna la coda d1 aggiungendo gli elementi di d2

Attributo di sola lettura

  • maxlen, il numero massimo di elementi (se non è stato impostato vale None)

Funzioni / Metodi

d.append(x)Aggiunge x alla coda (a destra)
d.appendleft(x)Aggiunge x alla coda a sinistra
d.clear()Elimina tutto il contenuto (lunghezza=0)
d.copy()Crea una copia superficiale della coda
d.count(x)Restituisce quante volte compare l’elemento x
d.extend(z)Aggiunge gli elementi di z alla coda (a destra)
d.extendleft(z)Aggiunge gli elementi di z alla coda a sinistra (uno dopo l’altro…)
d.index(x)Restituisce la prima posizione di x nella coda.
Accetta anche start, stop.
Provoca un errore se x non è presente.
d.insert(p, x)Inserisce x alla posizione p
len(d)Restituisce il numero di elementi presenti
max(c)Restituisce l’elemento più grande
min(c)Restituisce l’elemento più piccolo
d.pop()Restituisce e rimuove l’elemento più a destra.
Restituisce un errore se non ci sono elementi.
d.popleft()Restituisce e rimuove l’elemento più a sinistra.
Restituisce un errore se non ci sono elementi.
d.remove(x)Elimina la prima occorrenza di x.
Provoca un errore se x non è presente.
sum(d)Restituisce la somma degli elementi (se è possibile)
d.reverse()Capovolge il contenuto della coda.
reversed(d)Restituisce un iteratore alla coda capovolta.
d.rotate(n=1)Ruota la coda verso destra di n posizioni (l’elemento più a destra diventa il primo a sinistra.
Se n è negativo la rotazione è verso sinistra.
...

Prova

d=deque()                         # deque([])
d=deque("arcobaleno")             # deque(['a', 'r', 'c', 'o', 'b', 'a', 'l', 'e', 'n', 'o'])
d=deque(['red', 'green', 'blue']) # deque(['red', 'green', 'blue'])

x=len(d)      # x=3
x=max(d)      # x='red'
x=min(d)      # x='blue'

for x in d:   # x='red', 'green', 'blue' 
    ...

d.rotate()    # deque(['blue', 'red', 'green'])