python的堆和栈,python堆栈存放的是什么

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: