当前位置:   article > 正文

堆heapq-python_heapq.heapify(nums)

heapq.heapify(nums)

heapq

两个函数——nlargest()和nsmallest()

  1. >> import heapq
  2. >>> nums=[1,8,2,23,7,-4,18,23,42,37,2]
  3. >>> print(heapq.nlargest(3,nums))
  4. [42, 37, 23]
  5. >>> print(heapq.nsmallest(3,nums))
  6. [-4, 1, 2]
  7. heap=list(nums)
  8. >>>heapq.heapify(nums)#将列表原地转换成堆
  9. >>> nums
  10. [-4, 2, 1, 23, 7, 2, 18, 23, 42, 37, 8]
  11. heapq.heappop(nums) #轻松的找到最小的元素

常用

  1. from heapq import *
  2. import heapq #载入heap库,heap指的是最小堆
  3. heapq.heappush(heap, item): 将 item 的值加入 heap 中,保持堆的不变性。
  4. heapq.heappop(heap):弹出并返回 heap 的最小的元素,保持堆的不变性。如果堆为空,抛出 IndexError 使用 heap[0] ,可以只访问最小的元素而不弹出它。
  5. heapq.heappushpop(heap, item):将 item 放入堆中,然后弹出并返回 heap 的最小元素。该组合操作比先调用 heappush() 再调用 heappop() 运行起来更有效率。
  6. heapq.heapify(x) #使数组转化为堆** ,原地,线性时间内。
  7. heapq.heapreplace(heap, item):弹出并返回 heap 中最小的一项,同时推入新的 item。 堆的大小不变。先弹出再推入,heappushpop是先推入在弹出最小
  8. ##### 堆元素item可以为元组
  9. Python3以后的版本中,如果元组(priority,task)priority是一样的,而且task没有一个默认的比较参照值,那这样我们其实是没有办法来比较的。
  10. 我们可以采用三元数组的方法。设置一个优先级,一个条目值,一个任务值。 有相同优先级的时候,因为条目值不一样可以帮助cpu来裁决它们被加载的顺序
  11. ##### 方法

 

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

闽ICP备14008679号