Python中栈的详细介绍
作者:李和龙 发布时间:2023-05-16 07:22:02
标签:Python,栈
本文转自公众号:"算法与编程之美"
1、问题描述
Python
中数据类型有列表,元组,字典,队列,栈,树等等。像列表,元组这样的都是python内置数据结构;栈,队列这些都是需要我们自己去定义的。
栈是一种只允许在一端插入和取出的数据结构,这一端通常被叫做栈顶,另一端叫栈底,没有数据的叫空栈。这种数据类型由于是我们自己进行定义,所以有很多功能都需要自己写出相应函数来实现。所以我们看看这里的功能。
2、解决方案
栈的基本操作大概有:生成栈,入栈,出栈,返回栈顶元素,判断是否为空栈,返回栈内元素个数。
首先我们先要创建一个栈:
class stack(object):
def __init__(self):
self.__list = []
这里创建出来就是一个空栈,想要检测的话我们也可以通过一个函数来检测是否为空栈:
def is_empty(self):
return self.__list == []
# return not self.__list
这是两种return
的检测方式,任选其一都能够完成。
接下来创建了栈,也知道了检测栈是否为空。如定义所说,因为栈是我们自己定义的一种数据结构,且满足一个后进先出的规则,那么元素的保存和取出也自然不同。我们叫做入栈和出栈。首先是入栈,我么仅需要定义一个push函数:
def push(self,item):
self.__list.append(item)
然后定义一个函数pop来进行出栈:
def pop(self):
self.__list.pop()
peek函数进行返回栈顶元素操作:
def peek(self):
if self.__list:
return self.__list[-1]
else:
return None
size函数进行返回栈的元素个数的操作:
def size(self):
return len(self.__list)
3、结语
以上便是栈这种数据结构的大概用法,通过定义各种函数,然后在使用时直接调用,这样也显得非常的方便。
定义栈的函数时,特别要注意的是里面关键词的使用,例如__list,__init__,
中的下划线的使用,这些都是系统内定的,不能轻易改变,不然很容易让系统报错。


猜你喜欢
- —1—如果你对本文的代码感兴趣,可以去 Github (文末提供)里查看。第一次运行的时候会报一个错误(还没找到解决办法),不过只要再运行一
- 什么是Flyway?转载:https://blog.waterstrong.me/flyway-in-practice/Flyway is
- 这篇文章主要介绍了Pandas数据离散化原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- 平时写得多的是python,最近看了一点go,今天碰到了一个问题,和大家分享一下package mainimport "fmt&q
- 过拟合当训练集的的准确率很高, 但是测试集的准确率很差的时候就, 我们就遇到了过拟合 (Overfitting) 的问题. 如图:过拟合产生
- Spark Streaming VS Structured StreamingSpark Streaming是Spark最初的流处理框架,使
- 实现了我的小跳槽以后,从8月7号入职了现在的这家公司,我好像是加入了救火队的行列,还没有开始开发新的模块,只是一直在实现已经上线模块中的新需
- REPLACE用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。语法REPLACE ( ''strin
- 本文实例为大家分享了python实现吃苹果小游戏的具体代码,供大家参考,具体内容如下1.公共类模块import pygamefrom pyg
- Symfony2是一个基于PHP语言的Web开发框架,有着开发速度快、性能高等特点。本文以一个程序示例的实现过程详细叙述了Symfony2框
- 什么是反射在Python中,反射是指通过一组内置的函数和语句,在运行时动态地访问、检查和修改对象的属性、方法和类信息的机制。Python中的
- 前言上一篇文章介绍了怎么配置机器人框架,并且实现了一些简单的功能。(发送私聊或者群聊信息、接收上报的事件、简单的自动回复等等)这次为了让QQ
- 使用django启动命令行和脚本,可以方便的使用django框架做开发,例如,数据库的操作等。下面分别介绍使用方法。django shell
- 目的:python能使用xlrd模块实现对Excel数据的读取,且按照想要的输出形式。总体思路:(1)要想实现对Excel数据的读取,需要用
- ping 基本概念ping (Packet Internet Groper)是一种因特网包探索器,用于测试网络连接量的程序。Ping是工作在
- //--------------------弹出层------------------- //popDivId:弹出层div的ID //dr
- 1.选择最有效率的表名顺序(只在基于规则的优化器中有效) SQLSERVER的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM
- 例如,如果列a被定义为unique,并且值为1,则下列语句有同样的效果,也就是说一旦出入的记录中存在a=1的情况,直接更新c = c + 1
- 一、访问者模式(Visitor Pattern)数据结构中保存着许多元素,当我们希望改变一种对元素的处理方式时,要避免重复的修改数据结构。那
- 这是我研究网页切片算法的一个汇总想法。之前我写过:一种面向搜索引擎的网页分块、切片的原理,实现和演示,随着工作的深入,逐渐碰到以