python 堆栈_利用Python列表实现堆栈(二):实现

以下定义了一个全功能的堆栈类:class error(Exception): pass # when imported: local exception

class Stack:

def __init__(self, start=[]): # self is the instance object

self.stack = [] # start is any sequence: stack...

for x in start:

self.push(x)

def push(self, obj): # methods: like module + self

self.stack.append(obj) # top is end of list

def pop(self):

if not self.stack:

raise error('underflow')

return self.stack.pop() # like fetch and delete stack[-1]

def top(self):

if not self.stack:

raise error('underflow')

return self.stack[-1]

def empty(self):

return not self.stack # instance.empty()

def __len__(self):

return len(self.stack) # len(instance), not instance

def __getitem__(self, offset):

return self.stack[offset] # instance[offset], in, for

def __repr__(self):

return '[Stack:%s]' % self.stack

这里模拟了一个栈顶在列表末尾的堆栈。

进栈时,利用列表的append方法将数据添加至末尾;出栈时,则利用pop方法将末尾的元素删除并返回;

类中的top方法还可以仅返回栈顶元素而不做出栈操作;而empty方法可以检测当前栈是否为空;

另外,该类还实现了检测栈内元素个数、获取任意位置的元素等。

该实例来自于《Programming Python》4th Edition

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值