Python deque 函数详解

高效处理双端队列(Double-ended Queue)的利器

什么是 deque?

deque(读作 “deck”)是 Python 标准库 collections 模块中提供的一个双端队列数据结构。 它支持在两端高效地添加(append)和弹出(pop)元素,时间复杂度均为 O(1),比使用列表(list)模拟队列或栈更高效。

基本用法

首先需要导入:

from collections import deque

创建与基本操作示例:

d = deque([1, 2, 3])
d.append(4)        # 右侧添加 → [1, 2, 3, 4]
d.appendleft(0)    # 左侧添加 → [0, 1, 2, 3, 4]
d.pop()            # 右侧弹出 → 返回 4,队列变为 [0, 1, 2, 3]
d.popleft()        # 左侧弹出 → 返回 0,队列变为 [1, 2, 3]

常用方法一览

性能优势

使用列表(list)在头部插入或删除元素的时间复杂度为 O(n),而 deque 在两端的操作均为 O(1), 特别适合实现队列(FIFO)、栈(LIFO)或滑动窗口等场景。

模拟队列(先进先出):

from collections import deque

queue = deque()
queue.append('A')   # 入队
queue.append('B')
print(queue.popleft())  # 出队 → 'A'

实际应用场景

  1. 广度优先搜索(BFS):用 deque 作为待访问节点队列
  2. 滑动窗口算法:维护固定大小的窗口,快速进出元素
  3. 撤销/重做功能:用双端队列记录操作历史
  4. 日志缓冲:只保留最近 N 条日志

限制最大长度(maxlen)

创建 deque 时可指定 maxlen 参数,自动限制队列长度。当新元素加入导致超出长度时,另一端的元素会自动被移除。

d = deque(maxlen=3)
d.append(1)  # [1]
d.append(2)  # [1, 2]
d.append(3)  # [1, 2, 3]
d.append(4)  # [2, 3, 4] ← 自动丢弃最左边的 1
incompliance 翻译与详解-中文含义、用法及例句 iPhone 17 前后双摄:影像新纪元|全新摄影体验 Champion是什么牌子?品牌历史、产品特点与选购指南 Potential近义词大全|英语词汇学习专题 Switch无法登录eShop?常见原因与解决方法汇总|任天堂故障指南 Champion卫衣78TP专题页-经典美式潮流,舒适每一刻 Shopee采集软件-高效抓取商品数据,助力电商运营 PythonTip78TP网站-精通Python,从实战开始 Python软件开发指南-高效、简洁、强大的编程语言 如何入驻SHEIN平台-卖家入驻指南与流程详解 国行 iPhone 17 有 AI 吗?全面解析苹果最新智能功能 Python下载pip库-快速安装与使用指南 CompilationCumface 专题页-精选合集与创意展示 Python in 函数用法详解-快速掌握成员检测操作 Pioneer梯子-高效安全的网络访问工具 iPhone送货时间会提前吗?最新配送政策与用户经验分享 台服 Nintendo eShop 專題指南|最新遊戲、優惠與購買教學 Explanation的各个变形详解-动词、名词、形容词形式全解析 Ponchioe冲锋衣是什么档次?品牌定位、性能与价格全面解析 加入SHEIN|SHEIN招聘7LONGWEN-全球快时尚电商人才招募 探索“Something中文”:理解、应用与文化融合 Shopee卖家入口-免费入驻东南亚电商平台 Switch日版eShop使用教程|新手入门指南 Python中shape[0]详解-NumPy数组维度入门指南 Web Python 开发指南-使用 Python 构建现代 Web 应用 韩版日版美版iPhone哪个好?全面对比选购指南 高中生活指南|探索你的高中旅程 开学日专题-迎接新学期,开启新征程 iPhone年年换新计划-每年畅享最新苹果手机 日版 iPhone 17 最新版本更新内容|全面解析2025年日本市场专属特性 听力问题专题-了解、预防与应对听力损失 先锋Pioneer加速器-极速稳定,畅游全球网络 Be Pleasant With – 用善意与世界相处 内啡肽(Endorphin):人体的天然快乐激素 Python 安装 pip 命令详解-快速上手指南 iPhone 17 京东首发|全新升级,震撼来袭 先锋者-探索创新与引领未来的先驱 美版iPhone 11是双卡吗?全面解析双卡功能与版本区别 Pillow (PIL):Python 图像处理库入门与实战指南 iPhone白色和银色的区别-外观、材质与选购指南 Shine手表-精致工艺,闪耀每一刻 eShop商店-精选好物,品质生活 “on”是“open”的简写吗?深入解析常见英文缩写误区 Champion验证-安全可靠的冠军身份认证平台 Python中pip的作用-包管理工具详解 国行 iPhone 台湾可以使用吗?全面解析与使用指南 Python 与 IDLE 的关系详解|初学者入门指南 Python Turtle 库入门指南-轻松绘制图形与动画 Shopee App下载-东南亚领先的购物平台78TP应用 Python最简单while循环例子-入门教程 国家开放大学-开放教育引领终身学习新时代 pioneer的读音-英语发音指南与词义解析 使用 Python 搭建 Web 网站-入门指南与实战教程 The Centipede – Fascinating Facts, Habitat & Behavior Bonpoint旗舰店-法式童装奢侈品牌78TP线上精品店 Elephant翻译-中英文大象相关词汇与文化知识专题 Senior是大几?大学年级术语全解析 安装好 Python 后没有 IDLE?原因与解决方法全解析 被情绪淹没:理解与面对强烈情感 Like Many People — 探索我们共同的生活体验 顾晓庆与SHEIN:从中国设计师到全球时尚先锋 Python timeit 函数详解-高效性能测试工具 iPhone 17 爱马仕橙价格|全新配色与配置详情-2026最新资讯 Celery Python 入门指南-异步任务队列详解 iPhone 带回中国入境规定指南-最新海关政策与注意事项 渗透测试(Penetration Testing)入门指南|网络安全专题 Python IDE推荐-高效开发工具精选 iPhone 78TP網站-台灣|Apple Python读取bin数据:完整指南与示例 iPhone Air 港版在国内能用吗?全面解析与实测指南 港版 iPhone 17 Pro 价格|最新报价、购买指南与对比分析 Champion日版与美版对比:风格、版型与文化差异 连锁店(Chain Store)详解|定义、优势与全球案例 始祖鸟 Endorphin 外套-专业户外硬壳冲锋衣|极致防护与轻量设计 “Expedition”有贬义吗?词义解析与使用指南 Pioneer 短语搭配大全|常见英文短语学习指南 Python 直接用 pip 语句吗?详解 pip 的正确使用方式 Champion 歌曲歌词翻译-中英对照完整版 Python3IDE中文版下载-免费、轻量、易用的Python集成开发环境 Python怎么安装pip-详细图文教程 Python编程入门与实战指南-零基础学Python 日版 iPhone 11 在中国大陆能用吗?全面解析网络兼容性与使用建议 Champion码数怎么选?78TP尺码对照表与选购指南 洋葱(The Onion)——辛辣美味与健康之选 深入耕耘:探索“Plow Into”的含义与应用 新西兰iPhone 17:最新发布、价格与购买指南|2026前瞻 始祖鸟Endorphin是什么牌子?专业解析与产品介绍 Python中append()方法的用法详解|列表操作入门指南 Shopee 面经分享|真实面试经验与准备指南 pioneer怎么读英语发音-英语单词发音指南 用 IDLE 编写 Python 文件-新手入门指南 Python怎么安装PIL?完整指南(含Pillow替代方案) Onii-chan 专题页|兄妹情深与二次元文化 香港iPhone抢购攻略|最新iPhone发售时间、渠道与技巧 Champion冠军T恤-经典美式休闲潮流之选 iPhone 17 AI 功能详解-智能体验全面升级 OpenCV 入门指南-开源计算机视觉库详解 Conceive 与 Conception 的关系解析|语言与思维专题 Shopee账号出售-安全可靠的一站式Shopee店铺账号交易平台 NS eShop进不去?常见原因与解决方法汇总-任天堂eShop访问指南