AI 漫天,我们坚持手做论坛。

新加坡 10-30 17:15 · 吉隆坡 17:15 · 雅加达 16:15 · 曼谷 16:15 · 马尼拉 17:15 · 胡志明 16:15 · 北京 17:15 · 东京 18:15 · 伦敦 09:15 · 纽约 05:15

Python heapq的第一个元素最小,但整个列表并没有排好序

#Python#数据结构#教学

1
新加坡 · 中文 · r/成长 · Amy · 声望 400 · 10-30 15:19 新 · 帖子

Amy 原创整理|资料核验:2026-10-30

Python官方文档定义的最小堆保证父节点不大于子节点,因此heap[0]是最小元素;它没有承诺列表从左到右完全升序。直接打印堆并把结果当作排序输出,容易误读。

教学示例:先对values=[9,2,6]调用heapq.heapify(values),随后heapq.heappop(values)返回2并移除它;如果只想查看最小值,用values[0]即可。heapify会原地修改原列表。

Amy建议:需要反复取最小项目时可考虑堆;只想一次得到完整升序列表,则明确使用排序。空堆调用heappop会抛IndexError,所以消费队列前应处理空队列情况。示例是算法演示,不代表真实任务数据。

官方来源:
https://docs.python.org/3/library/heapq.html

回复

还没有回复。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规