当前位置: 首页 > news >正文

Python | 排队取奶茶

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

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

  • 获取队列的长度,即队列中元素的数量,通常使用列表的len()函数来获取
  • 判断队列是否为空,可以通过if not queue来判定
  • 入队操作,将新的元素添加到队列的尾部,使用列表的append()函数来实现
  • 出队操作,获取并移除队列的头部元素,可以通过pop(0)函数传递索引来实现。
  • 访问队列的头部元素,但不会将其移除,使用索引访问第一个元素queue[0]
#导入queue模块
import queue#创建一个对列
q = queue.Queue()#通过put实现入队操作
q.put(1)
q.put(2)
q.put(3)# 通过get()实现出队操作
item = q.get() #出队并返回队列中的元素
print(item)  #输出1

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

ueue = []#入队操作
queue.append("Tom")
queue.append("Jerry")
queue.append("Mike")#出队操作
remove_person = queue.pop(0)  #弹出并返回队列中的第一个元素#判断队列是否为空:
if not queueLprint("队列为空")
else:print(f"队头元素:{queue[0]}")

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

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

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模块的写法如下:

相关文章:

  • 老旧机子装LINUX——xubuntu
  • 自制植物大战僵尸:HTML5与JavaScript实现的简单游戏
  • JavaScript入门宝典:核心知识全攻略(下)
  • RabbitMQ怎么保证可靠性
  • [C#]使用OpenCvSharp图像滤波中值滤波均值滤波高通滤波双边滤波锐化滤波自定义滤波
  • 国产操作系统上Vim的详解03--使用Vundle插件管理器来安装和使用插件 _ 统信 _ 麒麟 _ 中科方德
  • 数据结构与算法笔记:基础篇 - 散列表(下):为什么散列表和链表经常会一起使用?
  • linux flask | 接口保持在后台一直运行、python后端接口长期调用、python后台持续运行方法、python提供后端接口
  • 2024上海初中生古诗文大会倒计时4个多月:单选题真题和独家解析
  • 使用亮数据代理IP爬取PubMed文章链接和邮箱地址
  • 常见八大排序(纯C语言版)
  • Vue2工程化
  • python的视频处理FFmpeg库使用
  • 深入解析MongoDB中的锁机制
  • Web UI自动化测试_Selenium+Python
  • Angular4 模板式表单用法以及验证
  • echarts的各种常用效果展示
  • IOS评论框不贴底(ios12新bug)
  • node学习系列之简单文件上传
  • PHP的类修饰符与访问修饰符
  • php中curl和soap方式请求服务超时问题
  • Promise初体验
  • ReactNativeweexDeviceOne对比
  • 大型网站性能监测、分析与优化常见问题QA
  • 数组大概知多少
  • 小程序开发中的那些坑
  • 用element的upload组件实现多图片上传和压缩
  • 运行时添加log4j2的appender
  • 白色的风信子
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • #define与typedef区别
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #php的pecl工具#
  • #window11设置系统变量#
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (C11) 泛型表达式
  • (PySpark)RDD实验实战——取一个数组的中间值
  • (zhuan) 一些RL的文献(及笔记)
  • (第二周)效能测试
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (一)Neo4j下载安装以及初次使用
  • (转)大型网站的系统架构
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 5种线程安全集合
  • .NET 8.0 中有哪些新的变化?
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景