• heapq模块中的两个函数——nlargest()和nsmallest()


    这两个函数可以帮助我们在某个集合中找出最大或最小的N个元素。例如:

    >>> import heapq
    >>> nums=[1,8,2,23,7,-4,18,23,42,37,2]
    >>> print(heapq.nlargest(3,nums))
    [42, 37, 23]
    >>> print(heapq.nsmallest(3,nums))
    [-4, 1, 2]
    如果正在寻找最大或者最小的N个元素,且同集合中元素的总数目相比,N很小,那么下面这些函数就可以提供更好的性能。这些函数首先会在底层将数据转化成列表,且元素会以堆得顺序排列。例如:

    >>> nums=[1,8,2,23,7,-4,18,23,42,37,2]
    >>> import heapq
    >>> heap=list(nums)
    >>> heapq.heapify(heap)#将列表原地转换成堆
    >>> heap
    [-4, 2, 1, 23, 7, 2, 18, 23, 42, 37, 8]
    堆最重要的特性就是,heap[0]总是最小的那个元素,此外,接下来的最小元素可以一次通过heapq.heappop()的方法轻松的找到。该方法会将第一个元素(最小的)弹出,然后以第二小的元素取而代之。例如,要找到第三小的元素,可以这样做:

    >>> heapq.heappop(heap)
    -4
    >>> heapq.heappop(heap)
    1
    >>> heapq.heappop(heap)
    2
    另外,heapq.heappush()的功能是把一项值压入堆,同时维持堆得排序要求。

  • 相关阅读:
    铁大电梯调度需求分析
    结对开发2
    四则运算3
    团队开发——冲刺2.d
    团队开发——冲刺2.c
    团队开发——冲刺2.b
    团队开发——冲刺2.a
    团队开发——冲刺1.g
    团队开发——冲刺1.f
    团队开发——冲刺1.e
  • 原文地址:https://www.cnblogs.com/wangjunjiehome/p/15992414.html
Copyright © 2020-2023  润新知