前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >对Python列表进行封装和二次开发实现自定义栈结构

对Python列表进行封装和二次开发实现自定义栈结构

作者头像
Python小屋屋主
发布2018-04-16 15:40:26
7570
发布2018-04-16 15:40:26
举报
文章被收录于专栏:Python小屋Python小屋

设计自定义栈类,模拟入栈、出栈、判断栈是否为空、是否已满以及改变栈大小等操作。

class Stack:

#构造方法

def __init__(self, maxlen = 10):

self._content = []

self._size = maxlen

self._current = 0

#析构方法,释放列表控件

def __del__(self):

del self._content

#清空栈中的元素

def clear(self):

self._content = []

self._current = 0

#测试栈是否为空

def isEmpty(self):

return not self._content

#修改栈的大小

def setSize(self, size):

#不允许新大小小于已有元素数量

if size < self._current:

print('new size must >=' + str(self._current))

return

self._size = size

#测试栈是否已满

def isFull(self):

return self._current == self._size

#入栈

def push(self, v):

if self._current < self._size:

#在列表尾部追加元素

self._content.append(v)

#栈中元素个数加1

self._current = self._current + 1

else:

print('Stack Full!')

#出栈

def pop(self):

if self._content:

#栈中元素个数减1

self._current = self._current - 1

#弹出并返回列表尾部元素

return self._content.pop()

else:

print('Stack is empty!')

def __str__(self):

return 'Stack(' + str(self._content) +', maxlen=' + str(self._size) + ')'

#复用__str__方法的代码

__repr__ = __str__

将代码保存为myStack.py文件,下面的代码演示了自定义栈结构的用法。

>>> from myStack import Stack #导入自定义栈

>>> s = Stack() #创建栈对象

>>> s.push(5) #元素入栈

>>> s.push(8)

>>> s.push('a')

>>> s.pop() #元素出栈

'a'

>>> s.push('b')

>>> s.push('c')

>>> s #查看栈对象

Stack([5, 8, 'b', 'c'], maxlen=10)

>>> s.setSize(8) #修改栈大小

>>> s

Stack([5, 8, 'b', 'c'], maxlen=8)

>>> s.setSize(3)

new size must >=4

>>> s.clear() #清空栈元素

>>> s.isEmpty()

True

>>> s.setSize(2)

>>> s.push(1)

>>> s.push(2)

>>> s.push(3)

Stack Full!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档