万能的list列表,python中的堆栈队列实现全靠它!
Posted Python 集中营
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了万能的list列表,python中的堆栈队列实现全靠它!相关的知识,希望对你有一定的参考价值。
在python编程中很多的数据计算都需要依靠列表来实现,比如Java编程中的堆栈结构/队列结构也可以通过list列表实现的。
1、将列表当做堆栈来使用
堆栈数据结构实现的思想就是:‘先进后出’,所以实现时需要保证先进来的数据最后出去,堆栈数据结构的一般在计算机的中缀表达式计算中应用场景比较多,因为计算机并不是简单的根据我们理解的加减乘除来进行数据运算的。
这里写了一个简单的实现过程,其实list列表中已经有自带的函数可以实现。
stack_ = [] # 初始化一个栈对象
\'\'\'
写一个for循环向栈对象中添加数据元素
\'\'\'
for n in range(10):
stack_.append(n) # 向栈对象中添加数据元素
print(stack_) # 当前栈对象中的数据元素
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
\'\'\'
写一个for循环来移除最后两个栈顶数据元素
\'\'\'
for m in range(2):
stack_.pop() # 通过pop函数移除栈顶元素
print(stack_) # 当前栈对象中的数据元素
# [0, 1, 2, 3, 4, 5, 6, 7]
# 可以发现最后进来的两个栈顶数据元素8、9被移除了出来
这样就简单实现了栈对象的过程达到‘先进后出’的效果,也就是‘后进先出’。
2、将列表当做队列来使用
队列数据结构实现的思想就是:‘先进先出’,将队列元素按照排队的方式依次加入到队列数组中,先加入的数据元素最先出来,然后后面的数据元素再向前移动。
同样的还是得通过list列表来实现,只是这次队列的实现需要导入一个python到代码块中来辅助实现。
from collections import deque # 将队列对象导入到代码块中
# 采用while循环的方式来进行数据的初始化
list_ = [] # 初始化一个list列表用于存放数据元素
k = 1 # 初始化k = 1,用于完成while循环
while k < 20: # 加入判断条件,这里取19个元素
list_.append(k) # 向列表中添加数据元素
k = k + 1 # 循环元素递增
print(list_) # 打印查看当前的lsit数据列表
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
# 生成了数据以后,然后将列表数据元素放到队列对象中。
queue_ = deque(list_) # 初始化队列对象
print(queue_) # 查看当前队列数据元素
# deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
# 现在向队列中添加数据元素
queue_.append(20) # 向队列中添加元素20
queue_.append(21) # 向队列中添加元素21
print(queue_) # 查看当前队列数据元素
# deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21])
# 现在从队列取出一个数据元素
queue_.popleft() # 从队列的头部取出数据元素
print(queue_) # 查看当前队列数据元素
# deque([2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21])
这时候,看到队列头部的数据元素1已经被取出了。
【往期精彩】
该怎么用pyqt5来实现数据的增、删、改、查功能...
介绍一个文本语音神器,几行代码就能搞定!
python批量自动整理文件
初学者福利:分享五个免费的 Python 学习网站,抓紧收藏吧!
有趣的控制台玩法:一行代码绘制控制台图像!
数据处理小工具:Excel 批量数据文件拆分/整合器...
办公自动化:PDF文件合并器,将多个PDF文件进行合并...
GUI猜数字游戏,直接开玩...
手把手教你做一个数据图表生成器(附源码)...
动态指针时钟:利用pyqt5制作指针钟表显示实时时间
python 日志中最亮的仔,是喜欢的花里胡哨吖...
哈撒给,英雄联盟全皮肤下载器来了...
以上是关于万能的list列表,python中的堆栈队列实现全靠它!的主要内容,如果未能解决你的问题,请参考以下文章