Ce face deque: rotate(), extendleft() și celelalte metode
rotate(n) mută elementele cu n poziții la dreapta (ultimele ajung primele); cu n negativ, la stânga. Este util pentru planificări prin rotație (round-robin).
extend() adaugă mai multe elemente la dreapta, iar extendleft() la stânga, unul câte unul, deci ordinea lor apare inversată. Restul metodelor funcționează ca la liste: insert(), remove(), index(), count(), reverse() (pe loc), clear() și copy().
Ce returnează
index, count: întregi. copy: un deque nou. Celelalte: None.
Exemple
Exemplul 1: Rotație și extindere
from collections import deque
d = deque([1, 2, 3, 4, 5])
d.rotate(2)
print(d)
d.rotate(-3)
print(d)
d.extendleft([10, 20])
d.extend([30])
print(d)
Rezultat
deque([4, 5, 1, 2, 3])
deque([2, 3, 4, 5, 1])
deque([20, 10, 2, 3, 4, 5, 1, 30])
Exemplul 2: Metode asemănătoare listelor
from collections import deque
d = deque("abcab")
print(d.count("a"), d.index("b"), d.index("b", 2))
d.insert(1, "X")
d.remove("a")
print(d)
d.reverse()
copie = d.copy()
d.clear()
print(copie, d)
Rezultat
2 1 4
deque(['X', 'b', 'c', 'a', 'b'])
deque(['b', 'a', 'c', 'b', 'X']) deque([])
Exemplul 3: Ture de serviciu prin rotație
from collections import deque
echipa = deque(["Ana", "Dan", "Ioana"])
for zi in ["luni", "marți", "miercuri", "joi"]:
print(zi, echipa[0])
echipa.rotate(-1)
Rezultat
luni Ana
marți Dan
miercuri Ioana
joi Ana
Greșeli frecvente
- Te aștepți ca
extendleft([1, 2])să pună1, 2la început în această ordine. Elementele sunt adăugate pe rând la stânga, deci rezultă2, 1, ....
Comenzi înrudite
collections.deque: Coadă cu două capete: adaugă și scoate rapid elemente atât la început, cât și la sfârșit.list.insert(): Inserează un element într-o listă, pe o poziție dată.itertools.count(), cycle() și repeat(): Iteratoare infinite: numărare fără sfârșit, repetarea ciclică a unei colecții, repetarea unei valori.