当前位置:首页 > 教育培训 >

python的栈用什么实现

来源:原点资讯(m.360kss.com)时间:2023-06-19 18:59:26作者:YD166手机阅读>>

前言

Python本身已有顺序表(List、Tupple)的实现,所以这里从栈开始。


什么是栈

想象一摞被堆起来的书,这就是栈。这堆书的特点是,最后被堆进去的书,永远在最上面。从这堆书里面取一本书出来,取哪本书最方便?肯定是最上面那本。栈这种数据结构的特点就是如此:后进先出(Last In First Out - LIFO),即最后被堆进去的数据,最先被拿出来。


栈的Python实现

栈可以用顺序表方式实现,也可以用链表方式实现。我大Python的内建数据结构太强大,可以用list直接实现栈,简单快捷。人生苦短,我用Python。代码如下:

class Stack(object):

# 初始化栈为空列表

def __init__(self):

self.items = []

# 判断栈是否为空,返回布尔值

def is_empty(self):

return self.items == []

# 返回栈顶元素

def peek(self):

return self.items[len(self.items) - 1]

# 返回栈的大小

def size(self):

return len(self.items)

# 把新的元素堆进栈里面(程序员喜欢把这个过程叫做压栈,入栈,进栈……)

def push(self, item):

self.items.append(item)

# 把栈顶元素丢出去(程序员喜欢把这个过程叫做出栈……)

def pop(self, item):

return self.items.pop()

if __name__ == __main__:

# 初始化一个栈对象

my_stack = Stack()

# 把'h'丢进栈里

my_stack.push('h')

# 把'a'丢进栈里

my_stack.push('a')

# 看一下栈的大小(有几个元素)

print my_stack.size()

# 打印栈顶元素

print my_stack.peek()

# 把栈顶元素丢出去,并打印出来

print my_stack.pop()

# 再看一下栈顶元素是谁

print my_stack.peek()

# 这个时候栈的大小是多少?

print my_stack.size()

# 再丢一个栈顶元素

print my_stack.pop()

# 看一下栈的大小

print my_stack.size

# 栈是不是空了?

print my_stack.is_empty()

# 哇~真好吃~

print 'Yummy~'

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51

Tips:

看完上面的代码,聪明的同学一定知道了,Python里面实现栈,就是把list包装成一个类,再添加一些方法作为栈的基本操作。其他的数据结构在Python中也是以类似的方式实现的。

那么,这里有一些有的没的要说一下~

如果希望items[]是Stack类私有的属性,这样做就好了:

def __init__(self):

self.__items = []

  • 1
  • 2

没错,就是在items前面加两个下划线__,在Python中,类的私有成员就是这样定义哒~

如果希望限定Stack类的成员只有items,不要其他的怪蜀黍乱加成员,那么这样做就好了:

class Stack(object):

__slots__ = ('__items')

def __init__(self):

self.__items = []

  • 1
  • 2
  • 3
  • 4
  • 5

这样就安全多啦~

Python并没有Java里的public/private/protected这样的修饰符,因为Python的设计者认为,“大家都是成年人了”~

python的栈用什么实现,(1)

,

栏目热文

python中的栈(什么叫python栈)

python中的栈(什么叫python栈)

栈的特点是后进先出!栈可以用顺序表实现,也可以用链表实现。栈是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删...

2023-06-19 19:23:10查看全文 >>

python堆和栈的概念(Python概念)

python堆和栈的概念(Python概念)

作者丨灯会来源丨极市平台编辑丨极市平台算法1.数组和链表的区别数组是将元素在内存中连续存放,由于每个元素占用内存相同,可...

2023-06-19 18:58:06查看全文 >>

python 栈和堆的区别(python中栈和队列区别)

python 栈和堆的区别(python中栈和队列区别)

堆定义堆是一种数据结构,它是一颗完全二叉树。其中每个父节点的值都小于或等于其所有子节点的值。整个堆的最小元素总是位于二叉...

2023-06-19 19:00:29查看全文 >>

python有堆栈吗(python堆栈大小怎么设置)

python有堆栈吗(python堆栈大小怎么设置)

Python实现堆栈堆栈是一个后进先出的数据结构,其工作方式就像一堆汽车排队进去一个死胡同里面,最先进去的一定是最后出来...

2023-06-19 19:31:27查看全文 >>

python栈基本结构与操作(python全栈入门教程)

python栈基本结构与操作(python全栈入门教程)

如何理解“栈”?关于“栈”,我有一个非常贴切的例子,就是一摞叠在一起的盘子。我们平时放盘子的时候,都是从下往上一个一个放...

2023-06-19 19:21:17查看全文 >>

python的全栈是什么(python 全栈开发学习什么)

python的全栈是什么(python 全栈开发学习什么)

全栈指掌握多种技能,并能利用多种技能独立完成产品。通俗的说就是与这项技能有关的都会,都能独立完成。python,因为目前...

2023-06-19 19:27:58查看全文 >>

什么叫python栈(python全栈要学什么)

什么叫python栈(python全栈要学什么)

究竟栈为何物栈是一种线性数据结构,用先进后出或者是后进先出的方式存储数据,栈中数据的插入删除操作都是在栈顶端进行。栈是一...

2023-06-19 18:53:38查看全文 >>

python全栈有什么用(Python全栈开发需要学什么)

python全栈有什么用(Python全栈开发需要学什么)

Python之所以成为最热门的全栈编程语言,可以归结于以下几个主要原因。首先,Python具有简单易学的语法和清晰优雅的...

2023-06-19 19:20:44查看全文 >>

python栈能用在什么场景(python中栈怎么使用)

python栈能用在什么场景(python中栈怎么使用)

栈栈的示意图1、什么是栈(stack)呢? 作为一个吃货,把“栈”想象是一摞迭在一起的大饼,在放饼的时候,需要自下而上一...

2023-06-19 18:52:41查看全文 >>

python堆栈教学视频

python堆栈教学视频

大家好,我是杨数Tos,这是《从零基础到大神》系列课程的第30篇文章,第二阶段的课程:Python基础知识:布尔值、堆栈...

2023-06-19 19:01:59查看全文 >>

文档排行