2

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

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

不是我正在寻找的行为。相反,我希望 python 破坏后面的东西,只存储最近的两个东西。

我也不想爆头——我想要的只是一个 LIFO 容器,它在位置 0 处有最新的元素,以及 n 个元素(由我指定)准确地表示最后 n 个元素推入 LIFO订单,我没有任何步骤或维护来使从队列末端掉落的物品掉落。

python3中有这种功能的类吗?

4

1 回答 1

1

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

>>> from collections import deque
>>> l = deque(maxlen=2)
>>> l.append("foo")
>>> l.append("bar")
>>> l.append("baz")
>>> l
deque(['bar', 'baz'], maxlen=2)
于 2021-03-02T19:23:12.677 回答