Чем воспользоваться для хранения такой очереди? Python

Программа получает на вход последовательность из N чисел. У нас имеется некоторое хранилище, куда можно положить только 5 чисел. Первые 5 чисел последовательности попадают в хранилище моментально. Последующие числа обрабатываются следующим образом:

  1. Если число уже есть в хранилище, то все числа в хранилище сдвигаются и это число встает на последнюю позицию. Пример: [1, 4, 8, 2, 5] + 4 -> [1, 8, 2, 5, 4]
  2. Если числа еще нет в хранилище, то удаляется число из начала хранилища, а добавляемое встает в конец. Пример: [1, 4, 8, 2, 5] + 9 -> [4, 8, 2, 5, 9]

Как реализовать такую структуру наиболее оптимально? Пока я написал код только с использованием deque

def update(queue, number):
    if number in queue:
        queue.remove(number)
        queue.append(number)
    else:
        queue.popleft()
        queue.append(number)

Ответы (1 шт):

Автор решения: strawdog

Можно, например, сделать так:

q = [1, 4, 8, 2, 5]

def updateq(q, num):
     return [x for x in q[not num in q:] if x!=num] + [num]

print(updateq(q, 4))
print(updateq(q, 9))

Результаты, соответственно:

[1, 8, 2, 5, 4]
[4, 8, 2, 5, 9]
→ Ссылка