当前位置:   article > 正文

python 栈的用法--学习_python栈的基本语法

python栈的基本语法

栈(stack),可以理解成一盒口香糖,想要拿出一颗,自然从顶部取走最后放入的,这里的顶部就是"栈顶";添加和移除新项都发生在栈顶,与栈顶对应的端称为“栈底”。栈这种数据结构的特点是后进先出(Last In First Out - LIFO),即最后被堆进去的数据,最先被拿出来。
从栈放入新项和从栈删除项的操作分别叫(push)和(pop)。
在这里插入图片描述

栈的操作

栈操作如下

Stack() 创建一个空的新栈。

push(item)将一个新项添加到栈的顶部。

pop() 从栈中删除顶部项。

peek() 从栈返回顶部项,但不会删除它

is_Empty() 测试栈是否为空。

size() 返回栈中的 item 数量。

栈的实现

这里把列表(list)相当于一个栈,可以使用 append 和 pop的列表方法来实现操作。以下栈实现假定列表的结尾将保存栈的顶部元素。随着栈元素增长(push ),新项将被添加到列表的末尾。(pop) 操作列表末尾的元素。

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
'
运行
if __name__ == '__main__':
    my_stack = Stack()		 # 初始化一个栈对象
   
    my_stack.push('a')		 # 把'a'丢进栈里
    
    my_stack.push('b')		# 把'b'丢进栈里
  
    my_stack.push('c')		# 把'c'丢进栈里
   
    print (my_stack.size())		 # 栈中有几个元素
  
    print (my_stack.peek())		  # 打印栈顶元素
 
    print (my_stack.pop('a'))	   # 把栈顶元素a丢出去,并打印出来
  
    print (my_stack.peek())	  # 再看一下栈顶元素是谁
   
    print (my_stack.size())		 # 这个时候栈的大小是多少?
  
    print (my_stack.pop('b'))		  # 再丢一个栈顶元素b
 
    print (my_stack.size)		   # 看一下栈的大小
  
    print (my_stack.is_empty())		  # 判断栈是不是空了?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

<扩展知识>

堆和栈的区别

1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事.

堆和栈的理论知识

由申请方式划分:
stack: 由系统自动分配。 例如,声明在函数中一个局部变量 int b; 系统自动在栈中为b开辟空间

heap: 需要程序员自己申请,并指明大小.

堆和栈的区别可以用如下的比喻来看出:
使用栈就如同我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。
使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。

有任何问题,可以关注我的公众号: IT果力成,一起学习交流~加油

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号