后进先出队列在超过长度时将元素从后端丢弃?
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.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)
我不想保存数据。我正在寻找一个容器,其中包含我塞入其中的最后 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.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)