天天看點

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