为什么 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.
我正在查看官方 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.