collections.deque
Двусторонняя очередь с быстрым добавлением и удалением элементов с обоих концов за O(1).
Сигнатура
collections.deque([iterable[, maxlen]])deque (double-ended queue) эффективнее списка для операций с началом последовательности. С параметром maxlen очередь становится кольцевым буфером: при переполнении вытесняются элементы с противоположного конца.
from collections import deque
d = deque([1, 2, 3])
d.append(4) # справа
d.appendleft(0) # слева
print(d) # deque([0, 1, 2, 3, 4])
buf = deque(maxlen=3)
for x in range(5):
buf.append(x)
print(buf) # deque([2, 3, 4], maxlen=3)