Deque - двухсторонние очереди
Возвращает объект, поддерживающий добавление слева и справа. а так-же пролистывание. Потокобезопасное добавление/удаление с обоих концов со сложностью O(1)
import collections
d = collections.deque('abcdefg')
# to the right
d.append('h')
# to the left
d2.appendleft('h')
# right rotation
d.rotate(2)
# left rotation
d.rotate(-2)
При ротации объекты переносятся с одного конца на другой.
Есть возможность ограничить длину очереди, задав maxlen
d = collections.deque(maxlen=3)
d.append('a')
d.append('b')
d.append('c')
d.append('c')
print(d)
>>> deque(['b', 'c', 'd'], maxlen=3)