Python heapq模块 (堆)

    这个模块实现了堆的数据结构。参考(浅析Python heapq模块 堆数据结构)

    堆是一种特殊的树形数据结构,每个节点都有一个值,通常我们所说的堆的数据结构指的是 二叉树

    堆的特点是 根节点的值最大(或者最小),而且根节点的两个孩子也能与孩子节点组成子树。堆分为两种,大根堆和小根堆(前提是二叉堆都可以看成一颗完全二叉树)。如下图所示:

    Python heapq模块 (堆)_第1张图片

    Python heapq模块 
    在python中,也对堆这种数据结构进行了模块化,我们可以通过调用heapq模块来建立堆这种数据结构,同时heap模块也提供了相应的方法来对堆做操作。
    heapq模块提供了以下方法:(引用自:Python heapq模块)

     heapq.heappush(heap, item) 把item添加到heap中(heap是一个列表)

    heapq.heappop(heap) 把堆顶元素弹出,返回的就是堆顶

    heapq.heappushpop(heap, item) 先把item加入到堆中,然后再pop,比heappush()再heappop()要快得多

    heapq.heapreplace(heap, item) 先pop,然后再把item加入到堆中,比heappop()再heappush()要快得多

    heapq.heapify(x) 将列表x进行堆调整,默认的是小顶堆

    heapq.merge(*iterables) 将多个列表合并,并进行堆调整,返回的是合并后的列表的迭代器

    heapq.nlargest(n, iterable, key=None) 返回最大的n个元素(Top-K问题)

    heapq.nsmallest(n, iterable, key=None) 返回最小的n个元素(Top-K问题)

   

    

你可能感兴趣的:(学习,Python)