python中的队列与栈

小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放在同级目录
# 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())

评论

  1. 博主
    Windows Edge
    1年前
    2023-3-26 17:35:09

    我后悔了,我应该把他俩分开说,还能水两篇文章

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯
 ̄﹃ ̄
(/ω\)
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
(´っω・`。)
( ,,´・ω・)ノ)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•)
(ㆆᴗㆆ)
整活by Mimosa233
Source: github.com/k4yt3x/flowerhd
galgame系列表情by Mimosa233
颜文字
小恐龙
夸夸我!
花!
可愛い!
上一篇
下一篇