为什么 python 中没有 `_heappush_max()`?

Why is there no `_heappush_max()` in python?

我正在查看官方 python repo,我注意到 heappush 没有最大变体,但他们有 pop 的其他最大实现和 _siftup.

这有什么原因吗?

这些函数仅供内部使用(另请参阅 PEP 8 on leading underscore): they serve here for the implementation of the public heapq.merge and heapq.nsmallest 函数,这些函数可能需要最大堆来生成结果,但永远不需要 push该最大堆上的一个元素。

由于这些函数不属于 public 接口,因此您不应依赖它们。在未来的版本中,它们可能会被删除、重命名或表现不同。

我们想知道为什么 Python 不包含支持最大堆的接口。一些注意事项:

  • 这只是设计师的决定,以后可能会改变

  • 等同于带数字的最大堆,是带这些数字取反的最小堆。

  • 有些软件包支持最大堆,就像 heapq 支持最小堆一样,例如 heapq_max.