python的堆和栈,python堆栈存放的是什么
什么是堆栈?
堆栈是一种以后进先出方式存储项目的数据结构。这通常被称为后进先出法。这与队列相反,队列以先进先出(FIFO)的方式存储项目。
使用list创建一个Python堆栈
列出你在程序中可能经常用到的可以作为堆栈使用的内置结构。而不是。push(),可以使用。append()向堆栈顶部添加新元素,而。pop()删除后进先出顺序的元素:
myStack=[]
myStack.append(a )
myStack.append(b )
myStack.append(c )
myStack
[a , b , c]
myStack.pop()
c
myStack.pop()
b
myStack.pop()
一个
myStack.pop()
回溯(mostrecentcalllast):
文件“控制台”,第1行,在模块中
错误: popfromemptylist你可以在最后一个命令中看到,如果调用空栈,list会引发一个。IndexError.pop()
列表的优点是熟悉。您知道它是如何工作的,并且可能在您的程序中使用过它。
遗憾的是,与其他数据结构相比,你会看到list的一些缺点。问题是随着发展,会遇到速度问题。在列表A中存储项目的目的是提供对列表中随机元素的快速访问。从更高的层面来看,这意味着项目在内存中是相邻存储的。
如果您的堆栈大于当前拥有它的内存块,那么Python需要做一些内存分配。这可能会引起一些。append()调用比其他调用花费的时间长。
还有一个不太严重的问题。如果你使用。insert()将元素添加到堆栈的末尾以外的位置,这可能需要更长的时间。但是,这通常不是你必须做的事情。
下一个数据结构将帮助你解决你所看到的列表中的重新分配问题。
使用collections.deque创建一个Python堆栈
collections模块包含deque,这对于创建Python堆栈很有用。德克读作“deck”,代表“德克”。
你可以使用同样的方法deque,list,append()和。pop()你看上面:
fromcollectionsimportdeque
myStack=deque()
myStack.append(a )
myStack.append(b )
myStack.append(c )
myStack
德克([a , b , c])
myStack.pop()
c
myStack.pop()
b
myStack.pop()
一个
myStack.pop()
回溯(mostrecentcalllast):
文件“控制台”,第1行,在模块中
错误: popfromemptydequest这看起来与列表上方的示例几乎相同。此时,您可能想知道为什么Python核心开发人员创建了两个看起来一样的数据结构。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。