首页 > 解决方案 > 为什么 Python 标准库中没有最大堆数据类型?

问题描述

我已阅读主题What do I use for a max-heap implementation in Python?到今天已经被浏览了超过 74k 次(这意味着很多人都遇到了同样的问题),我一直想知道在 Python 标准库中没有实现最大堆数据类型的原因是什么?在我看来,取反或反转这些值并将它们保存在最小堆中看起来很丑陋,并引入了不必要的开销(我们需要注意自己应用转换两次)。

编辑:正如@Boris 所指出的,这个问题已经在增强请求 27295 中提出并在 2016 年被拒绝。这是 Raymond Hettinger 的理由:

抱歉,James,我们不会在没有充分证明需求的情况下开发 API;否则,我们最终会导致 API 蔓延。有实际用例的人没有请求行为(偶尔会通过否定数字参数来获得一次性行为)。这就是为什么有意将 maxheap 函数设为私有的原因。

FWIW,这个模块已经很老了,核心功能早已证明自己足以满足他们的用例(比如在事件循环中使用以有效地选择下一个预定事件)。

标签: pythonalgorithmheappep

解决方案


推荐阅读