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!
python中的栈结构_对Python列表进行封装和二次开发实现自定义栈结构相关推荐
- 对Python列表进行封装和二次开发实现自定义栈结构
设计自定义栈类,模拟入栈.出栈.判断栈是否为空.是否已满以及改变栈大小等操作. class Stack: #构造方法 def __init__(self, maxlen = 10): self._co ...
- python中的递归思想_〖Python〗-- 递归、面向对象初识及编程思想
[递归.面向对象初识及编程思想] 一.递归 1.定义: 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. (1)递归就是在过程或函数里调用自身: (2)在使用递归策 ...
- python中case的用法_用 Python 实现简单的 switch/case 语句
在Python中是没有Switch / Case语句的,很多人认为这种语句不够优雅灵活,在Python中用字典来处理多条件匹配问题字典会更简单高效,对于有一定经验的Python玩家不得不承认,的确如此 ...
- python中ndim是什么_使用Python中的ndim和shape属性获取darray数据的维度、长度、形状和其他参数,python,ndarray,等...
我们在描述一个多维数组的时候,经常会用到两个参数:维度(dimension)和形状(shape),以二维数组为例,我们可以用矩阵来形象地联想这两个参数,对于矩阵,显然我们最常见的矩阵是二维的,所以他的 ...
- python中类似对象吗_在Python中,两个对象什么时候相同? - python
似乎2 is 2和3 is 3在python中始终为true,通常,对整数的任何引用都与对相同整数的任何其他引用相同. None(即None is None)也是如此.我知道用户定义类型或可变类型不会 ...
- python中nomodulenamed怎么解决_关于 python ImportError: No module named 的问题
今天在 centos 下安装 python setup.py install 时报错:ImportError: No module named sysconfig, 当时急着用,就顺手直接源码编译了一 ...
- python中函数的调用_慢步python,编程中函数的概念,python中函数的声明和调用
函数,曾经是一个很高大尚的概念.笔者是在高中数学里认识的函数,先是从y=2x+3 这条代数式开始的.y是因变量,x是自变量,y因为x取值的变化而变化. 再后来式子变成这样:f(x)=2x+3,f(x) ...
- python中var是什么_这些Python Number 知识你需要了解!
原标题:这些Python Number 知识你需要了解! 如果把编程比作建房子,那么数据就是建材.而建材有砖头.水泥.木头.钢材等,不同类型的建材配合工作,才能把房子建好.编程也一样,不同类型的数据类 ...
- 简述python中面向对象的概念_简述Python中的面向对象编程的概念
面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机 ...
最新文章
- 公共技术点之 Java 反射 Reflection
- 模拟http中需要注意到的headers字段
- 高效万进制——蓝桥杯|HDOJ 1002 大数加法——30行代码AC
- 网络计算机 用户名和密码,局域网需要用户名和密码怎么办
- mysql的natural join_MySQL基础之Natural Join用法
- linux mailbox模型
- Delphi使用server组件控制excel的一点经验
- ArcGIS操作小技巧(五)之色带-----横向(水平)图例
- TFTP 简单文件传输协议 简介
- 机械制图与计算机绘图的区别,机械制图与计算机绘图教案.doc
- android自定义加载旋转框
- mp3外链,文件上传,QQ空间永久背景音乐,mp3连接,
- H3C交换机SNMP配置
- scratch教程——弹球游戏
- 被 HR 直接怼:估计你一辈子就是个程序员
- 和菲利普•科特勒的《营销管理》一样,这些都是比较好的市场营销书籍
- 软件测试自动化分类,自动化测试的主要分类
- python提取身份证信息_Python selenium 身份证信息在线解析爬取
- MFC+opencv实现摄像头的打开与关闭
- 简易计算器(非常简单)本文为转载