我不想保留数据。我正在寻找一个容器,其中包含我塞进去的最后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)