Python heapq 模块详解

掌握最小堆(Min-Heap)在 Python 中的高效使用

什么是 heapq?

heapq 是 Python 标准库中的一个模块,用于实现堆(heap)数据结构。 它提供了一系列函数,可以在列表上原地维护一个最小堆(即堆顶元素为最小值)。 虽然名为“heap”,但 heapq 并不提供堆类,而是通过函数操作普通列表。

常用函数一览

基础使用示例

import heapq

# 创建一个空堆
heap = []

# 添加元素
heapq.heappush(heap, 5)
heapq.heappush(heap, 1)
heapq.heappush(heap, 3)

print(heap)  # [1, 5, 3] —— 注意:不是完全排序,但满足堆性质

# 弹出最小元素
min_val = heapq.heappop(heap)
print(min_val)  # 1
print(heap)     # [3, 5]

从列表构建堆

import heapq

data = [10, 3, 7, 1, 9]
heapq.heapify(data)
print(data)  # [1, 3, 7, 10, 9]

注意:heapify() 是原地操作,且只保证堆性质,不保证完全有序。

实际应用场景

1. 实现优先队列

由于堆天然支持快速获取最小(或最大)元素,常用于任务调度、Dijkstra 算法等场景。

2. 找出 Top-K 元素

import heapq

scores = [85, 92, 78, 96, 88, 91]
top3 = heapq.nlargest(3, scores)
print(top3)  # [96, 92, 91]

3. 合并多个有序流

import heapq

list1 = [1, 4, 7]
list2 = [2, 5, 8]
list3 = [3, 6, 9]

merged = list(heapq.merge(list1, list2, list3))
print(merged)  # [1, 2, 3, 4, 5, 6, 7, 8, 9]

注意事项

连锁店(Chain Store)详解|定义、优势与全球案例 Pristhesis:探索合成美学与未来设计 Nothing On Me 中文翻译-歌词、含义与背景解析 Champion AS-英雄联盟职业战队介绍与赛事资讯 incorporate 的词性详解|英语词汇学习专题 自然拼读入门指南-轻松掌握英语发音规则 iPhone 17 京东首发|全新升级,震撼来袭 台版 iPhone 17 最新消息與特色介紹|2026 全新上市 emotion读音-英文单词“emotion”发音、释义与用法详解 Switch怎么登陆eShop?详细图文教程-任天堂eShop登录指南 Chaimpion-探索冠军之路|成就、故事与精神 NS香港eShop-任天堂Switch港服遊戲商店指南 台灣 iPhone 17 Pro 可以插卡嗎?完整解析與購買指南 Python中list怎么用-列表基础、操作与实用技巧 Incotporate-探索创新与协作的未来工作方式 “Senior”咋读?发音、意思与用法全解析 Python字符串转int方法详解|快速掌握int()函数用法 iPhone 17 前后双摄:影像新纪元|全新摄影体验 iPhone 17 美版和国行区别详解|全面对比与选购指南 Be Nice For – 传递善意,温暖世界 Switch无法登录eShop?常见原因与解决方法汇总|任天堂故障指南 冠军荣耀-全球顶级赛事与冠军故事专题 Mon Chéri巧克力-法式榛果夹心经典之选 Python解码器-在线工具与教程|快速解析Base64、URL、Unicode等编码 Python安装后找不到IDLE?原因与解决方法全解析 iPhone 17 Pro 对比评测|全面对比与深度分析 宝可梦剑盾与Pokémon HOME专题-宝可梦联动指南 Endophilin A2:神经突触功能与疾病研究的关键蛋白 Python Matplotlib 安装指南-快速上手数据可视化 美版iPhone产地揭秘-美国销售的iPhone来自哪里? 如何加入SHEIN?78TP入驻指南与合作方式详解 Pioneer的中文意思-先驱者、开拓者与先锋详解 内啡肽(Endorphin):身体的天然快乐激素 iPhone 17 香港售價預測與最新資訊|2026年最全指南 Python pip 更新教程-一键升级 pip 到最新版本 先锋Pioneer老音响型号大全|经典复古音响收藏指南 Oni Chichi 2-探索奇幻与亲情交织的冒险世界 Pioneer电视机怎么投屏?详细教程与常见问题解答 PythonTip7LONGWEN-学Python,就上PythonTip Python:将Series转换为DataFrame的完整指南 香港買 iPhone 要交稅嗎?2026 最新免稅政策詳解 去香港买 iPhone 17 最全攻略|省钱指南、购买流程与注意事项 Heading For:探索方向与目标的旅程 Shine招聘7LONGWEN-发现你的闪耀职业机会 Pioneer是什么音响?品牌历史、产品特点与选购指南 Python如何下载pip-完整安装指南 Prorino怎么样?全面评测与用户真实体验分享 Python编程语言-强大、简洁、高效的开源软件开发利器 自信的力量|培养自信,成就更好的自己 Pioneer手机遥控器-用手机轻松控制您的Pioneer设备 装了 Python 没有 pip?快速解决方法指南 moncheri的小说世界-原创幻想与情感交织的文学天地 Python3 IDE 下载-免费、轻量、跨平台开发工具推荐 Shein模特招聘-加入全球时尚先锋团队 日服eShop下载指南-安全获取日本任天堂eShop应用 Python hex() 函数详解-十六进制转换指南 意大利 Pinetti 品牌专题-手工皮革艺术与意式优雅 NS eShop无法显示页面?常见原因与解决方法-任天堂eShop故障排查指南 MicroPython 与 Python 的区别详解|入门指南 NS登陆港服eShop完整指南-港服Nintendo Switch商店设置教程 Python中@property的作用详解-提升代码可读性与封装性 先锋Pioneer加速器-极速稳定,畅游全球网络 怎么看iPhone是日版还是美版?详细图文教程 iPhone手机发烫?快关掉这个功能!降温小技巧全解析 iPhone三个摄像头怎么切换?详细操作指南|iPhone摄影技巧 champion怎么读?发音、音标、例句全解析 iPhone 17 陆版与台版对比详解|最新上市信息、配置差异与购买建议 港版 iPhone 17 AI 功能深度體驗|智能新境界 Antipodes下载-安全高速获取最新版Antipodes软件 iPhone韩版和国行的区别-全面对比指南 iPhone序列号以D开头的含义与查询指南 烟鬼组合(The Chainsmokers)78TP专题页|电子音乐双人组 Pioneer词根词缀解析-探索英语词汇的起源与构成 Python添加库指南-安装与管理第三方包的完整教程 Python对象转字符串详解-str()、repr()与自定义方法 岩石圈(Lithosphere)-地球的坚硬外壳 助听器指南-解决听力问题,重拾清晰世界|HearingProblem Python bytes 转 str 完全指南|编码、解码与常见问题 第一台iPhone叫什么?揭秘初代iPhone的历史与命名 Python中IDLE怎么执行代码-新手入门指南 pip升级Python包命令大全-快速掌握pip upgrade用法 senior的音标-英语发音与释义详解 Polyhedron 期刊-国际配位化学与无机结构研究权威期刊 初听之感|On First Hearing Python左轮:探索Python的趣味编程世界 iPhone XR 属于苹果第几代?全面解析 iPhone 第12代产品 incorporate固定搭配大全|英语学习专题 Python Spyder 专题页-强大的科学计算IDE Pokémon HOME-78TP宝可梦云存储服务 Shopee中文7LONGWEN-东南亚领先的电商平台 iPhone 第一代发布时间-历史上的科技里程碑 日本Shine公司-创新科技与可持续发展的引领者 Champion品牌标志-历史、演变与设计解析 The Chainsmokers-电子音乐双人组合78TP专题页 Orphon 是什么意思?全面解析 Orphon 的含义与用法 Shopee Brasil – Compre Online com Ofertas e Frete Grátis Python安装pip包完整指南|快速上手pip命令 Python中sep参数的作用详解-快速掌握print函数分隔符用法 Shine跨境电商-跨境出海一站式解决方案 始祖鸟 Incendo Hoody 防风连帽夹克-轻量透气 高性能户外装备