Я столкнулся с этой же проблемой ... maxlen = 5 из deque НЕ был поддерживаемым вариантом из-за проблем со скоростью / надежностью доступа.
ПРОСТОЕ РЕШЕНИЕ:
l = []
l.append(x) # add 'x' to right side of list
l = l[-5:] # maxlen=5
После добавления просто переопределите «l» как самые последние пять элементов «l».
print(l)
Назови это Готово.
В ваших целях вы могли бы остановиться прямо здесь ... но мне нужен был поплетт (). В то время как pop () удаляет элемент справа, где он был только что добавлен ... pop (0) удаляет его слева:
if len(l) == 5: # if the length of list 'l' has reached 5
right_in_left_out = l.pop(0) # l.popleft()
else: #
right_in_left_out = None # return 'None' if not fully populated
Наконечник шляпы Джеймсу на Tradewave.net
Нет необходимости для функций класса или deque.
Далее ... добавить влево и щелкнуть вправо:
l = []
l.insert(0, x) # l.appendleft(x)
l = l[-5:] # maxlen=5
Будет вашим эквивалентом appendleft (), если вы захотите загрузить список спереди без использования deque
Наконец, если вы решите добавить слева ...
if len(l) == 5: # if the length of list 'l' has reached 5
left_in_right_out = l.pop() # pop() from right side
else: #
left_in_right_out = None # return 'None' if not fully populated