当长度超过时,从其后端丢弃元素的后进先出队列



我不想保留数据。我正在寻找一个容器,其中包含我塞进去的最后N个项目,并允许项目从它的后端脱落并过期。

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

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

我也不想从头开始——我想要的只是一个LIFO容器,它在零位有最新的元素,以及n个元素(由我指定),确切地代表了按LIFO顺序推入的最后n个元素,而我没有步骤或维护来让从队列末尾掉下来的项目掉下来。

python3中是否有此类功能的类?

collections.deque使用maxlen=2可以实现您想要的功能:

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

相关内容

  • 没有找到相关文章

最新更新