从双端队列的后面删除项目

deleting items from the back of a deque

我在 Python 中使用出列。我知道要从出队中删除某个项目,我可以通过它的索引来完成。像这样:

from collections import deque
deq = deque([1, 2, 3, 4, 5, 6, 7, 8])
del deq[1]

现在我想从dequeue的尾部删除多个item,所以我用这个:

from collections import deque

deq = deque([1, 2, 3, 4, 5, 6, 7, 8])
for i in range(1, 5):
    del deq[-i]
print(deq)

我希望新的 deqdeq=[1, 2, 3, 4] 但输出是 deq = [1, 3, 5, 7]。为什么会这样?

最后一个元素的索引为 -1。当你删除最后一个元素时,下一个要删除的元素仍然有索引 -1

from collections import deque

deq = deque([1, 2, 3, 4, 5, 6, 7, 8])
for i in range(1, 5):
    del deq[-1]

也许更好的选择是

deq.pop()

弹出最后一个元素(和 returns 它)