Python | 排队取奶茶

  • 队列的基本概念(队头、队尾)和特点(先入先出)

在 Python 语言中,标准库中的queue模块提供了多种队列的实现,比如普通队列和优先级队列,因此你可以使用queue.Queue类来创建队列,不过我们依旧可以使用列表来模拟队列的实现。

  • 获取队列的长度,即队列中元素的数量,通常使用列表的len()函数来获取
  • 判断队列是否为空,可以通过if not queue来判定
  • 入队操作,将新的元素添加到队列的尾部,使用列表的append()函数来实现
  • 出队操作,获取并移除队列的头部元素,可以通过pop(0)函数传递索引来实现。
  • 访问队列的头部元素,但不会将其移除,使用索引访问第一个元素queue[0]
python 复制代码
#导入queue模块
import queue

#创建一个对列
q = queue.Queue()

#通过put实现入队操作
q.put(1)
q.put(2)
q.put(3)

# 通过get()实现出队操作
item = q.get() #出队并返回队列中的元素
print(item)  #输出1

也可以用列表模拟队列(上道题用列表实现了栈):

python 复制代码
ueue = []

#入队操作
queue.append("Tom")
queue.append("Jerry")
queue.append("Mike")

#出队操作
remove_person = queue.pop(0)  #弹出并返回队列中的第一个元素

#判断队列是否为空:
if not queueL
    print("队列为空")
else:
    print(f"队头元素:{queue[0]}")

由此可见,在列表中,如果直接pop(),那么将会弹出列表的最末尾一个值;而如果pop(0),那么将会弹出列表中的第一个元素

按照列表模拟队列的写法如下:

python 复制代码
n = int(input())
persons = input().split()
m = int(input())

for _ in range(m):
    ope = input().split()
    opt = int(ope[0])
    if opt == 1:
        if persons:
            move_person = persons.pop(0)
    if opt == 2:
        persons.append(ope[1])
if persons:
    print(persons.pop(0))
else:
    print("There are no more people in the queue.")

按照queue模块的写法如下:

相关推荐
天天被压力5 分钟前
【A股分钟级高频数据完全手册 #05】指数历史分钟数据接口:Pro版沪深指数分时回放
java·人工智能·python
captain37621 分钟前
▲统一功能——DispatcherServlet源码分析
java·spring·java-ee·log4j·maven
ATMQuant25 分钟前
量化策略开发08:Lasso因子选择 - 因子动物园的断舍离
python·量化交易·lasso·vnpy·多因子选股
金銀銅鐵32 分钟前
JDK 21 中 List.of 的实现细节:从 List12 到 ListN
java·后端·ai编程
yeccheng2 小时前
MySQL 索引超详解:从底层 B+ 树到面试高频考点
java·开发语言·jvm·mysql·面试
联犀2 小时前
纯 Go 的 CAD 开源库 go-cad:直接解析 DWG/DXF,现在也能导出 PDF
开发语言·golang·pdf
这个昵称不容易2 小时前
SpringBoot 读书笔记共享平台部署实战:97 个 Java 文件 / 113 个接口 / 10 张表
java·springboot·毕设
ATMQuant3 小时前
量化指标解码21:逻辑回归支撑阻力 - 让逻辑回归给关键价位打分
python·机器学习·逻辑回归·量化交易·技术指标
zjxtxdy3 小时前
C++面向对象程序开发-类与对象
开发语言·c++
q0371803 小时前
深色 IDE 截图 OCR 老是漏字,我加了一层预处理,顺手把识别结果做成了可搜索历史
python