小Jack原创文章,请勿抄袭,搬运注明出处
区别
队列(queue)
队列:一种数据结构,符合先进先出的逻辑
队列的创建
# 导入队列类(queue模块)
from queue import Queue
# 实例队列
q = Queue ()
注:实例队列默认无限长度,当然,你可以为它添加最大数据量上限,如
q = Queue () # 无限长度
q = Queue (5) # 最大数据量为5
注:这里的数据量不等于后面的元素个数
入队和出队
入队: 将元素插入队尾
q.put(待入队的元素)
出队:删除队头元素
q.get ()
# 或者赋值给b
b = q.get()
队列中的元素个数
用qsize()功能,如:
from queue import Queue
q = Queue(5) #上限为5
q.put('a') #插入1个元素
s = q.qsize() #获取长度
print(s)
输出区:1
[应用]队列获取列表最大值
from queue import Queue
lst = [5, 6, 2, 1, 3, 4]
max_l = Queue() # 创建队列来比较
max_l.put(lst[0]) # 先把列表第一个元素放入队列
# 从第二个元素开始,遍历列表
for i in range(1, len(lst)):
# max_1中的元素出队
num = max_l.get()
# 与遍历的元素做比较
if lst[i] > num:
max_l.put(lst[i])
else:
max_l.put(num)
print(num)
队列的其他功能
Queue.Queue(maxsize=0) FIFO, 如果maxsize小于1就表示队列长度无限
Queue.LifoQueue(maxsize=0) LIFO, 如果maxsize小于1就表示队列长度无限
Queue.empty() 如果队列为空,返回True,反之False
Queue.full() 如果队列满了,返回True,反之False
Queue.queue.clear() 清空队列
暂且就说这些常用的功能吧🫡
栈(stack)
简介
栈:后进先出(先进后出)
继上图,入栈顺序是:1234567,出栈顺序是:7654321
允许进行插入和删除元素的一端称为栈顶(元素7),不允许插入和删除元素的一端称为栈底(元素1)。
注:栈底是固定的,栈顶会根据元素的进栈出栈而变化
实现栈
与队列不同,Python中没有提供可以直接使用的栈模块,我们可以自己来写一个栈模块,以便使用。
在Python中,一个.py文件就可以作为一个模块。我们可以在stack.py文件中自定义一个Stack类,让它作为栈的模板,在类中根据栈的特点,实现栈应该具备的功能。
# stack.py
# 初始化实例属性
class Stack:
def __init__(self):
self.items = []
# 定义函数:实现入栈
def push(self, item):
self.items.append(item)
# 定义函数:实现出栈
def pop(self):
return self.items.pop()
# 定义函数:查看栈顶元素
def peek(self):
if len(self.items) != 0:
return self.items[-1]
# 定义函数:获取栈中元素的个数
def size(self):
return len(self.items)
- 创建栈:Stack()
- 入栈:push()
- 出栈:pop()
- 查看栈顶元素:peek()
- 获取栈中元素的个数:size()
使用栈
# 从stack模块中导入Stack类
from stack import Stack
# 创建一个栈
s = Stack()
s.push('熊猫')
s.push('绵羊')
print(s.pop())
print(s.peek())
print(s.size())
我后悔了,我应该把他俩分开说,还能水两篇文章