Python heapq 模块详解

heapq 是 Python 标准库中用于实现堆队列(优先队列)的模块。它基于最小堆(min-heap)结构,常用于需要高效获取最小(或最大)元素的场景,如任务调度、Top-K 问题等。

什么是堆?

堆是一种特殊的完全二叉树,满足以下性质:

Python 的 heapq 模块默认实现的是最小堆

常用函数

基本使用示例

# 创建一个空堆
import heapq

heap = []
heapq.heappush(heap, 5)
heapq.heappush(heap, 1)
heapq.heappush(heap, 3)

print(heap)           # [1, 5, 3]
print(heapq.heappop(heap))  # 1
print(heap)           # [3, 5]

使用列表初始化堆

import heapq

data = [4, 7, 1, 9, 3]
heapq.heapify(data)
print(data)  # [1, 3, 4, 9, 7] —— 堆结构,非排序列表

实现最大堆技巧

由于 heapq 只支持最小堆,可通过插入负值模拟最大堆:

import heapq

max_heap = []
heapq.heappush(max_heap, -10)
heapq.heappush(max_heap, -5)
heapq.heappush(max_heap, -20)

# 弹出最大值(实际是最小的负数)
max_val = -heapq.heappop(max_heap)
print(max_val)  # 20

实用场景:Top-K 问题

import heapq

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

注意:堆不是排序列表!heap[0] 始终是最小元素,但其余元素无序。若需完整排序,请使用 sorted()

性能特点

iPhone国行好还是台版好?全面对比与选购建议-手机选购指南 宝可梦百科-全面了解神奇宝贝世界 iPhone 11 Pro 双卡怎么放?详细图文教程-苹果双卡设置指南 Champion-冠军的英文含义、用法与精神象征 When It Comes To – Explore Topics That Matter IronPython 有什么用?全面解析 .NET 平台上的 Python 实现 Python中print函数的end参数详解-用法、示例与技巧 岩石圈(Lithosphere)-地球的坚硬外壳 Python ctypes 教程-调用 C 函数的完整指南 iPhone 17电池续航能用多久?全面解析与实测数据 Shopee翻译工具-跨境电商多语言翻译助手 Pioneer怎么连接WiFi?详细图文教程-快速上手指南 Shein企业文化|创新、敏捷与全球时尚的融合 港版 iPhone eSIM 国内能用吗?2026 最新实测与指南 Shopee跟卖策略指南-防范与应对方法 台灣的 iPhone 是什麼版本?完整解析與型號對照 RingoChiu-创意与技术的交汇点 美版iPhone 11是双卡吗?全面解析双卡功能与版本区别 Champion商标-经典美式运动品牌历史与文化 Bonpoint香水-法式优雅与童真芬芳的完美融合 Python自带pip吗?全面解析Python与pip的关系 SHEIN模特风采|时尚穿搭灵感与幕后故事 Reputation同义词大全|声誉、名望、信誉近义词查询 iPhone手机发烫?快关掉这个功能!降温小技巧全解析 Pioneer词根词缀解析-探索英语词汇的起源与构成 Python中pip的用法详解-快速上手包管理工具 Shopee是什么意思?全面解析东南亚电商平台Shopee Mon Chéri巧克力-法式榛果夹心经典之选 You Are Nothing To Me-情感专题页面 Mon Cher 法语学习专题|轻松入门浪漫法语 iPhone发烫是什么原因?全面解析与解决方法-手机使用指南 他对我真的很好-温暖人心的日常故事 Champion衣服吊牌详解|品牌标识、材质与真伪辨别指南 iPhone 17 韩版和国版区别详解|最新对比指南 Pioneer电视机怎么投屏?详细教程与常见问题解答 iPhone 13 远峰蓝-颠覆视觉的旗舰智能手机|78TP详情页 SHEIN估值分析-快时尚巨头的商业价值与未来前景 Reputation 的形容词大全-提升英语表达力 It Is Like Doing Something — 探索生活中的奇妙类比 To Something:探索无限可能的旅程 Python怎么卸载pip?完整指南|卸载pip命令与注意事项 Pioneer DJ-专业DJ设备与音乐创作先锋 抗血管生成(Anti-Angiogenesis)——癌症治疗新策略 Pleasant to Hear-悦耳之声:探索令人心旷神怡的声音世界 The Chainsmokers-电子音乐双人组合78TP专题页 Shine衣服品牌-焕发自信光彩,穿出闪耀自我 Shopee应用程序-东南亚领先的电商平台 Python 发送 GET 请求详解-requests 与 urllib 实战指南 Python3 IDE手机版下载-轻量高效,随时随地写代码 SHEIN招聘-加入全球领先的时尚科技公司 Conceive 的名词含义与用法详解|英语词汇专题 韩版iPhone能用国内的卡吗?全面解析与使用指南 Pythonend怎么用?全面入门指南与使用教程 冠军PSY-韩国流行音乐传奇与《江南Style》现象 Python time模块详解-时间处理与格式化指南 Superior 与 Senior:词义辨析与应用场景指南 Python time 库方法详解-常用时间处理函数大全 Be Senior To:理解资历、经验与尊重 KinPrecision-高精度运动控制与智能驱动解决方案 Tournament 与 Champion 的区别:电竞与体育术语解析 新加坡 iPhone 购买指南与最新资讯|新加坡苹果手机专题 连锁店(Chain Store)详解|定义、优势与全球案例 Python 与 IDLE 的关系详解|初学者入门指南 日本买iPhone 17回国可以用吗?全面解析与使用指南 安装了 Python 却没有 pip?快速解决方法汇总 iPhone银色是白色吗?全面解析苹果银色配色真相 我超爱熊猫!🐼|探索大熊猫的可爱世界 我爱熊猫-了解国宝大熊猫的可爱世界 去香港买 iPhone 17 的完整步骤详解|超值购机指南 Pioneer登山杖使用指南-正确使用方法与技巧 Champion全国门店查询-78TP授权零售店一览 台湾iPhone是否分国行?详解国行、台版与水货区别 eshop怎么下载-78TP下载指南与使用教程 内啡肽至上|Endorphins Over Everything Shein公司创始人许仰天:快时尚电商背后的掌舵人 深入理解 compile 函数:原理、应用与示例 Nintendo Switch 游戏主机专题-掌机与家用机的完美融合 加入SHEIN|SHEIN招聘7LONGWEN-全球快时尚电商人才招募 “Something”中文谐音趣:探索英文谐音的奇妙世界 许仰天:SHEIN创始人与快时尚帝国的缔造者 iPhone Air 电池容量详解-续航表现与使用建议 Champions Chosen-英雄之选|探索传奇英雄与命运之战 Champion鞋质量好不好?真实评测与用户反馈 Apple iPhone 香港官網入口|最新 iPhone 型號、價格與購買資訊 Ponchioe是什么牌子?中文名、品牌介绍与产品解析 Pioneer电视信号源切换指南-轻松掌握多设备切换技巧 Python语法入门指南-快速掌握基础与核心语法 iPhone 17是哪里产的?最新产地信息与供应链解析 Python 在线 IDE-免费在线运行 Python 代码 SHEIN员工人数|公司规模与全球团队发展概况 Python安装OpenCV库完整指南|快速上手计算机视觉 Compliment 中文翻译大全-赞美与夸奖的表达方式 Professional吹风机-专业级速干护发体验 Champion是杂牌还是名牌?深度解析品牌历史与市场定位 在国内怎么买港版iPhone?全攻略指南 Pioneer功放说明书-78TP用户手册与操作指南 int在Python中代表什么?整数类型详解|Python基础教程 Championship什么意思?全面解析冠军赛事术语 Python Celery 入门与实战指南-异步任务队列最佳实践 Python算法入门与实战|高效编程从算法开始