deque: rotate(), extendleft() și celelalte metode în Python

Modulul collections Python 3.0+ (copy, count, index, insert: 3.5+)

Rotirea unui deque și restul metodelor lui, asemănătoare cu cele ale listelor.

Sintaxă
d.rotate(n=1)
d.extend(it) / d.extendleft(it)
d.insert(i, x) / d.remove(x) / d.index(x) / d.count(x)
d.reverse() / d.clear() / d.copy()

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, 2 la început în această ordine. Elementele sunt adăugate pe rând la stânga, deci rezultă 2, 1, ....

Comenzi înrudite