Чем воспользоваться для хранения такой очереди? Python
Программа получает на вход последовательность из N чисел. У нас имеется некоторое хранилище, куда можно положить только 5 чисел. Первые 5 чисел последовательности попадают в хранилище моментально. Последующие числа обрабатываются следующим образом:
- Если число уже есть в хранилище, то все числа в хранилище сдвигаются и это число встает на последнюю позицию. Пример: [1, 4, 8, 2, 5] + 4 -> [1, 8, 2, 5, 4]
- Если числа еще нет в хранилище, то удаляется число из начала хранилища, а добавляемое встает в конец. Пример: [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]