论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
全网最适合入门的面向对象编程教程:38 Python常用复合 ...
全网最适合入门的面向对象编程教程:38 Python常用复合数据类型-使用列表实 ...
丝
金牌会员
|
2024-8-24 23:44:23
|
来自手机
|
显示全部楼层
|
阅读模式
楼主
主题
868
|
帖子
868
|
积分
2604
全网最适合入门的面向对象编程教程:38 Python 常用复合数据类型-使用列表实现堆栈、队列和双端队列
择要:
在 Python 中,列表(list)是一种非常灵活的数据结构,可以用来实现堆栈(stack)、队列(queue)和双端队列(deque)。这些数据结构虽然在使用时遵照差别的操作规则,但都可以通过 Python 列表来高效地实现。
原文链接:
FreakStudio的博客
往期推荐:
学嵌入式的你,还不会面向对象??!
全网最适合入门的面向对象编程教程:00 面向对象计划方法导论
全网最适合入门的面向对象编程教程:01 面向对象编程的基本概念
全网最适合入门的面向对象编程教程:02 类和对象的 Python 实现-使用 Python 创建类
全网最适合入门的面向对象编程教程:03 类和对象的 Python 实现-为自界说类添加属性
全网最适合入门的面向对象编程教程:04 类和对象的Python实现-为自界说类添加方法
全网最适合入门的面向对象编程教程:05 类和对象的Python实现-PyCharm代码标签
全网最适合入门的面向对象编程教程:06 类和对象的Python实现-自界说类的数据封装
全网最适合入门的面向对象编程教程:07 类和对象的Python实现-类型注解
全网最适合入门的面向对象编程教程:08 类和对象的Python实现-@property装饰器
全网最适合入门的面向对象编程教程:09 类和对象的Python实现-类之间的关系
全网最适合入门的面向对象编程教程:10 类和对象的Python实现-类的继承和里氏替换原则
全网最适合入门的面向对象编程教程:11 类和对象的Python实现-子类调用父类方法
全网最适合入门的面向对象编程教程:12 类和对象的Python实现-Python使用logging模块输出步伐运行日记
全网最适合入门的面向对象编程教程:13 类和对象的Python实现-可视化阅读代码神器Sourcetrail的安装使用
全网最适合入门的面向对象编程教程:全网最适合入门的面向对象编程教程:14 类和对象的Python实现-类的静态方法和类方法
全网最适合入门的面向对象编程教程:15 类和对象的 Python 实现-__slots__邪术方法
全网最适合入门的面向对象编程教程:16 类和对象的Python实现-多态、方法重写与开闭原则
全网最适合入门的面向对象编程教程:17 类和对象的Python实现-鸭子类型与“file-like object“
全网最适合入门的面向对象编程教程:18 类和对象的Python实现-多重继承与PyQtGraph串口数据绘制曲线图
全网最适合入门的面向对象编程教程:19 类和对象的 Python 实现-使用 PyCharm 自动生成文件注释和函数注释
全网最适合入门的面向对象编程教程:20 类和对象的Python实现-组合关系的实现与CSV文件保存
全网最适合入门的面向对象编程教程:21 类和对象的Python实现-多文件的组织:模块module和包package
全网最适合入门的面向对象编程教程:22 类和对象的Python实现-非常和语法错误
全网最适合入门的面向对象编程教程:23 类和对象的Python实现-抛出非常
全网最适合入门的面向对象编程教程:24 类和对象的Python实现-非常的捕获与处理
全网最适合入门的面向对象编程教程:25 类和对象的Python实现-Python判断输入数据类型
全网最适合入门的面向对象编程教程:26 类和对象的Python实现-上下文管理器和with语句
全网最适合入门的面向对象编程教程:27 类和对象的Python实现-Python中非常层级与自界说非常类的实现
全网最适合入门的面向对象编程教程:28 类和对象的Python实现-Python编程原则、哲学和规范大汇总
全网最适合入门的面向对象编程教程:29 类和对象的Python实现-断言与防御性编程和help函数的使用
全网最适合入门的面向对象编程教程:30 Python的内置数据类型-object根类
全网最适合入门的面向对象编程教程:31 Python的内置数据类型-对象Object和类型Type
全网最适合入门的面向对象编程教程:32 Python的内置数据类型-类Class和实例Instance
全网最适合入门的面向对象编程教程:33 Python的内置数据类型-对象Object和类型Type的关系
全网最适合入门的面向对象编程教程:34 Python的内置数据类型-Python常用复合数据类型:元组和命名元组
全网最适合入门的面向对象编程教程:35 Python的内置数据类型-文档字符串和__doc__属性
全网最适合入门的面向对象编程教程:36 Python的内置数据类型-字典
全网最适合入门的面向对象编程教程:37 Python常用复合数据类型-列表和列表推导式
更多出色内容可看:
给你的 Python 加加速:一文速通 Python 并行盘算
一文搞懂 CM3 单片机调试原理
肝了半个月,嵌入式技能栈大汇总出炉
电子盘算机类比赛的“武林秘籍”
一个MicroPython的开源项目集锦:awesome-micropython,包含各个方面的Micropython工具库
Avnet ZUBoard 1CG开发板—深度学习新选择
SenseCraft 部署模型到Grove Vision AI V2图像处理模块
文档和代码获取:
可访问如下链接进行对文档下载:
https://github.com/leezisheng/Doc
本文档主要先容怎样使用 Python 进行面向对象编程,必要读者对 Python 语法和单片机开发具有基本了解。相比其他解说 Python 面向对象编程的博客或书籍而言,本文档更加详细、偏重于嵌入式上位机应用,以上位机和下位机的常见串口数据收发、数据处理、动态图绘制等为应用实例,同时使用 Sourcetrail 代码软件对代码进行可视化阅读便于读者明白。
相关示例代码获取链接如下:
https://github.com/leezisheng/Python-OOP-Demo
正文
使用列表实现堆栈
列表方法使得列表可以很方便的作为一个堆栈来使用,堆栈作为特定的数据结构,
最先辈入的元素末了一个被开释(先辈后出)。
用 append() 方法可以把一个元素添加到堆栈顶。用不指定索引的 pop() 方法可以把一个元素从堆栈顶开释出来。
stack = [3, 4, 5]
stack.append(6)
stack.append(7)
print(stack)
print(stack.pop())
print(stack)
print(stack.pop())
print(stack.pop())
print(stack)
复制代码
运行结果如下:
使用列表实现队列
也可以把列表当做队列用,只是在队列里第一加入的元素,第一个取出来;但是拿列表用作这样的目标效率不高。在列表的末了添加大概弹出元素速率快,然而在列表里插入大概从头部弹出速率却不快(因为所有其他的元素都得一个一个地移动)。示例代码如下:
class Queue(object):
'''
使用列表实现队列
'''
def __init__(self):
'''
初始化操作
'''
self.__list = []
def enqueue(self, item):
'''
往队列中添加元素
'''
self.__list.append(item)
def dequeue(self):
'''
从队列头部取出元素
'''
return self.__list.pop(0)
def is_empty(self):
'''
判断列表是否为空
'''
return self.__list == []
def size(self):
'''
返回列表的大小
'''
return len(self.__list)
s = Queue()
s.enqueue(1)
s.enqueue(2)
s.enqueue(3)
s.enqueue(4)
print(s.__dict__)
print(s.dequeue())
print(s.dequeue())
print(s.dequeue())
print(s.dequeue())
复制代码
运行结果如下:
使用列表实现双端队列
双端队列(deque,全名 double-ended-queue),是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双端队列可以在队列的恣意一端入队和出队。
使用列表实现双端队列的示例代码如下:
class Deque(object):
'''
双端队列
'''
def __init__(self):
'''
初始化列表
'''
self.__list = []
def add_front(self, item):
'''
往队列头部添加元素
'''
self.__list.insert(0, item)
def add_rear(self, item):
'''
往队列尾部添加元素
'''
self.__list.append(item)
def pop_front(self):
'''
从队列头部删除元素
'''
return self.__list.pop(0)
def pop_rear(self):
'''
从队列头部删除元素
'''
return self.__list.pop()
def is_empty(self):
'''
判断列表是否为空
'''
return self.__list == []
def size(self):
'''
返回列表的大小
'''
return len(self.__list)
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
丝
金牌会员
这个人很懒什么都没写!
楼主热帖
ShardingSphere 异构迁移最佳实践:将3 ...
MySQL 5.7 安装教程(全步骤、保姆级教 ...
本科毕设CTF平台-MarsCTF
KubeEdge 1.12版本发布,稳定性、安全 ...
Redis介绍与安装
15.Linux和Windows入侵排查
mysql数据迁移,通用windows->linux,li ...
Grafana 系列文章(一):基于 Grafana ...
Spring Data JPA系列2:SpringBoot集成 ...
学生信息管理系统(JAVA+MYSQL) ...
标签云
存储
挺好的
服务器
快速回复
返回顶部
返回列表