gpt4 book ai didi

python - Deque 在 Python 中是如何工作的

转载 作者:太空宇宙 更新时间:2023-11-03 12:56:46 24 4
gpt4 key购买 nike

在尝试用 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) 吗?

最佳答案

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

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

双端队列还支持最大长度,这意味着当您向双端队列添加大于最大长度的对象时,它会从另一端“丢弃”一些对象以保持其最大大小。

关于python - Deque 在 Python 中是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38679914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com