查看双端队列

时间:2019-03-16 06:08:23

标签: python deque

我有一个固定长度的双端队列,它在左侧接收推送的项目。

我希望定期复制所有值,而不影响双端队列中的元素。我正在使用more_itertools“ spy”函数,如下所示:

from collections import deque
from more_itertools import spy

d = deque(maxlen=3)
d.appendleft(1)
d.appendleft(2)
d.appendleft(3)

# Setup
D = spy(d, n=3)
print(D[0])  # >>>[3, 2, 1]

# Now add another item and retrieve the snapshot again
d.appendleft(4)
print(D[0])  # >>>[3, 2, 1]  Same! I want: [4, 3, 2]

2 个答案:

答案 0 :(得分:1)

spy中的more_itertools函数没有执行您期望的功能。它会一次性复制参数中的第一个n值,然后将其返回给元组,并且该迭代器的行为仍然与参数类似(即使参数是一个迭代器,而不是一个可以反复重复)。

供您使用,您应该只在每次需要时都复制双端队列值。代替print(D[0]),只需执行print(list(d))(或者如果您对格式不挑剔,只需print(d))。

答案 1 :(得分:0)

根据您在代码中的注释,如果您实际上希望在检查队列时更改出列队列,为什么不弹出项目(与标题冲突)呢?