当前位置:   article > 正文

python heapq_python heapq能用角标访问吗

python heapq能用角标访问吗

python heapq

堆是一个二叉树,它的每个父节点的值都会小于或等于所有孩子节点的值。它使用了数组来实现:从零开始计数,对于所有的k,都有heap[k] <= heap[2k+1]和heap[k] <= heap[2*k+2] 。为了便于比较,不存在的元素被认为是无限大。堆最有趣的特性在于最小元素总是在根节点。

初始话一个堆,可以使用list来初始话,或者可以通过一个函数heapify()来把list转化成堆。

  • heapq.heappush(heap, item)
    将item的值加入到堆中,保持堆的不变性

  • heapq.heappop(heap)
    弹出并返回heap的最小元素,保持堆的不变性。如果堆为空,抛出IndexError。使用heap[0]可以访问最小的元素而不弹出它。

  • heapq.heappushpop(heap, item)
    将item放入堆中,然后弹出并返回heap的最小元素。该操作类似于先heapq.heappush(heap, item)和heapq.heappop(heap)的组合

  • heapq.heapify(x)
    将list x抓换成堆。

  • heapreplace(heap, item)
    弹出并返回heap中最小的一项,同时推入新的item。如果堆为空报错IndexError
    类似于heapq.heappop()和heapq.heappush()的组合。

  • heapq.merge(*iterable, key=None, reverse=False)
    将多个已排序的输入合并为一个已排序的输出。返回已排序的值的iterator。

  • heapq.nlargest(n, iterable, key=None)
    从iterable所定义的数据集中返回前n个最大元素组成的列表。

  • heapq.nsmallest(n, iterable, key=None)
    从iterable所定义的数据集中返回前n个最小元素组成的列表。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/1020088
推荐阅读
相关标签
  

闽ICP备14008679号