后进先出队列在超过长度时将元素从后端丢弃?

LIFO Queue that drops elements off the back end of it when length is exceeded?

我不想保存数据。我正在寻找一个容器,其中包含我塞入其中的最后 N 件物品,并允许物品从其后端掉落并过期。

blocking_lifo = queue.LifoQueue(maxsize=2)
blocking_lifo.put("foo")
blocking_lifo.put("bar")
blocking_lifo.put("foo') # <-- fail

不是我要找的行为。相反,我想 python 销毁后面的东西,只存储最近的两个东西。

我也不想爆头——我只想要一个后进先出容器,它在零位置有最新的元素,n 个元素(由我指定)正好代表最后 n 个元素以后进先出的顺序推入,我没有任何步骤或维护来使队列末尾掉落的物品掉落。

python3 中是否有针对此类功能的 class?

collections.dequemaxlen=2 完全符合您的要求:

>>> from collections import deque
>>> l = deque(maxlen=2)
>>> l.append("foo")
>>> l.append("bar")
>>> l.append("baz")
>>> l
deque(['bar', 'baz'], maxlen=2)