python实现堆栈_利用Python列表实现堆栈(一):剖析

堆栈是一种非常常见且简单易用的数据结构,适用在多种应用场合。堆栈是一种数据项按序排列的数据结构,只能在一端(栈顶)对数据项进行插入和删除,遵循后进先出的原则。

在不同的需求中,栈的操作可能不仅限于进栈和出栈,可能还需要检测栈是否为空,获取栈顶元素但并不将其弹出,遍历栈内所有元素,或者检测某元素是否在栈中存在等等。

在Python中,一个简单的列表元素通常足够用来实现栈:它允许对其中的元素进行任意操作,从任意一端插入或取出元素。下表总结了一些Python内置的列表操作方法来模拟栈操作。操作栈顶处于列表末尾栈顶位于列表起始位置栈顶位于列表起始位置

新建stack=['a', 'b']stack=['b', 'a']stack=['b', 'a']

进栈stack.append('c')stack.insert(0,'c')stack[0:0]=['c']

出栈top = stack[-1]

del stack[-1]top = stack[0]

del stack[0]top = stack[0]

stack[:1] = []

在上表中,我们的出栈操作分为两步,先获取元素,后删除。实际上,要完成这一工作,有个更简单的方法就是利用Python的pop方法,它默认删除列表末尾的元素并返回。该方法支持传入一个参数,即偏移量。即删除并返回指定位置的元素。

甚至说还有一种方法可以实现:# top is front of list

top, stack = stack[0], stack[1:] # Python 1.X+

top, *stack = stack # Python 3.X

# top is end of list

stack, top = stack[:-1], stack[-1] # Python 1.X+

*stack, top = stack # Python 3.X

不过该方法的确点在于会额外生成新的列表。

本文部分翻译自《Programming Python》4th Edition

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值