Deque如何在Python中工作

时间:2016-07-31 01:14:11

标签: python queue

在尝试使用Python重新创建队列和堆栈时,我无法理解deque如何在下面的代码片段中工作。

堆栈示例 - 理解

stack = ["a", "b", "c"]

# push operation
stack.append("e")
print(stack)

# pop operation
stack.pop()
print(stack)

按照预期的推动和弹出," e"先进先出(LIFO)。我的问题是下面的例子。

队列示例 - 不理解

from collections import deque

dq = deque(['a','b','c'])
print(dq)

# push
dq.append('e')
print(dq)

# pop
dq.pop()
print(dq)

当推动和弹出时," e"先进先出(LIFO)。不应该是先进先出(FIFO)吗?

1 个答案:

答案 0 :(得分:8)

A deque is a generalization of stack and a queue (It is short for "double-ended queue")

因此,pop()操作仍然使它像堆栈一样运行,就像它作为列表一样。要使其像队列一样,请使用popleft()命令。 Deques用于支持两种行为,这样pop()函数在数据结构中是一致的。为了使deque像队列一样,您必须使用与队列对应的函数。因此,在第二个示例中将pop()替换为popleft(),您应该会看到您期望的FIFO行为。

Deques也支持最大长度,这意味着当你向deque中添加的对象大于maxlength时,它会" drop"另一端的许多物体保持其最大尺寸。