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

时间:2018-12-12 09:18:08

标签: python deque

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

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

现在,我想从出队的末尾删除多个项目,所以我使用这个:

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 个答案:

答案 0 :(得分:3)

最后一个元素的索引为-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()

弹出最后一个元素(并返回它)