在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已经被取出了。