• 14_Python将列表作为栈和队列_Python编程之路


    上一篇文章跟大家介绍了列表的一些方法,这一节我们还是讲列表

    只是这一节我们要联系一些数据结构,来讲列表

    首先我们要理解一下栈是一种什么数据结构

    栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素

    通过下面一张图理解一下栈是怎么工作的

    简单来讲就是后进先出

    下面我们通过python列表的append()和pop()来简单实现栈的功能

    例如以下代码

    In [1]: stack = [2, 3, 4, 5]
    
    In [2]: stack.append(6)
    
    In [3]: stack.append(7)
    
    In [4]: stack
    Out[4]: [2, 3, 4, 5, 6, 7]
    
    In [5]: stack.pop()
    Out[5]: 7
    
    In [6]: stack
    Out[6]: [2, 3, 4, 5, 6]
    
    In [7]: stack.pop()
    Out[7]: 6
    
    In [8]: stack.pop()
    Out[8]: 5
    
    In [9]: stack
    Out[9]: [2, 3, 4]
    

      

    整体就是这样一个栈的结构,入栈与出栈,是按照后进先出的顺序进行的

    队列

     队列也是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

    简单来说就是先进先出的一种数据结构 

    使用列表实现队列的功能如果用collections包里面的deque方法会更好

    下面是队列的代码演示

    In [1]: from collections import deque
    
    In [2]: queue = deque(["ayesup", "jack", "Tom"])
    
    In [3]: queue.append("susmote")
    
    In [4]: queue.append("eric")
    
    In [5]: queue.popleft()
    Out[5]: 'ayesup'
    
    In [6]: queue.popleft()
    Out[6]: 'jack'
    
    In [7]: queue
    Out[7]: deque(['Tom', 'susmote', 'eric'])
    

    开始先导包,然后使用deque生成一个队列形式的列表,然后使用列表的方法简单实现一个先入先出的功能

    关于stack和队列就讲到这里,后面可能还会有涉及这部分的知识

    官方博客 www.susmote.com

  • 相关阅读:
    记一次rabbitmq 消息不能接收故障的处理
    wundergraph 开源了
    dremio logback 几个配置文件简单说明
    nginx 提供的MARA参考架构
    openresty sse 动态扩展处理
    基于nchan 构建可靠的websocket 服务
    nodejs stream 背压处理学习
    rrun+juicefs 进行nodejs 模块的运行
    haproxy 2.6 发布
    top10 nginx 配置问题
  • 原文地址:https://www.cnblogs.com/susmote/p/8934397.html
Copyright © 2020-2023  润新知