collections.deque în Python

Modulul collections Python 3.0+ (maxlen: 3.1+)

Coadă cu două capete: adaugă și scoate rapid elemente atât la început, cât și la sfârșit.

Sintaxă
from collections import deque
d = deque(iterabil, maxlen=None)
d.append(x), d.appendleft(x), d.pop(), d.popleft()

Ce face collections.deque

deque (se citește „deck”) este o listă optimizată pentru operații la capete. append() și pop() lucrează la dreapta, appendleft() și popleft() la stânga, toate în timp constant. La o listă obișnuită, insert(0, x) și pop(0) sunt lente.

Cu maxlen, coada are o lungime maximă: când este plină, adăugarea la un capăt scoate automat un element de la celălalt. Este perfect pentru „ultimele N” valori (istoric, medii mobile).

Parametri

Parametru Descriere
iterabil Opțional. Elementele inițiale.
maxlen Opțional. Lungimea maximă.

Ce returnează

Un obiect deque.

Exemple

Exemplul 1: Coadă de așteptare

from collections import deque
coada = deque(["Ana", "Dan"])
coada.append("Ioana")
coada.appendleft("Urgent: Mihai")
print(coada)
print("Servit:", coada.popleft())
print("Ultimul pleacă:", coada.pop())
print(coada)

Rezultat

deque(['Urgent: Mihai', 'Ana', 'Dan', 'Ioana'])
Servit: Urgent: Mihai
Ultimul pleacă: Ioana
deque(['Ana', 'Dan'])

Exemplul 2: Ultimele N valori cu maxlen

from collections import deque
ultimele = deque(maxlen=3)
for temperatura in [18, 20, 23, 21, 19]:
    ultimele.append(temperatura)
    print(list(ultimele), "medie:", round(sum(ultimele) / len(ultimele), 1))
print(ultimele.maxlen)

Rezultat

[18] medie: 18.0
[18, 20] medie: 19.0
[18, 20, 23] medie: 20.3
[20, 23, 21] medie: 21.3
[23, 21, 19] medie: 21.0
3

Greșeli frecvente

  • Accesezi des elemente din mijloc (d[500]) pe un deque mare. Accesul prin index la mijloc este mai lent decât la o listă.

Comenzi înrudite