亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python heapq使用詳解及實例代碼

 更新時間:2017年01月25日 08:54:02   作者:純臻  
這篇文章主要介紹了Python heapq使用詳解及實例代碼的相關資料,需要的朋友可以參考下

 Python heapq 詳解

Python有一個內(nèi)置的模塊,heapq標準的封裝了最小堆的算法實現(xiàn)。下面看兩個不錯的應用。

小頂堆(求TopK大)

話說需求是這樣的: 定長的序列,求出TopK大的數(shù)據(jù)。

import heapq
import random

class TopkHeap(object):
  def __init__(self, k):
    self.k = k
    self.data = []

  def Push(self, elem):
    if len(self.data) < self.k:
      heapq.heappush(self.data, elem)
    else:
      topk_small = self.data[0]
      if elem > topk_small:
        heapq.heapreplace(self.data, elem)

  def TopK(self):
    return [x for x in reversed([heapq.heappop(self.data) for x in xrange(len(self.data))])]

if __name__ == "__main__":
  print "Hello"
  list_rand = random.sample(xrange(1000000), 100)
  th = TopkHeap(3)
  for i in list_rand:
    th.Push(i)
  print th.TopK()
  print sorted(list_rand, reverse=True)[0:3]

大頂堆(求BtmK?。?/strong>

這次的需求變得更加的困難了:給出N長的序列,求出BtmK小的元素,即使用大頂堆。

算法實現(xiàn)的核心思路是:將push(e)改為push(-e)、pop(e)改為-pop(e)。

class BtmkHeap(object):
  def __init__(self, k):
    self.k = k
    self.data = []

  def Push(self, elem):
    # Reverse elem to convert to max-heap
    elem = -elem
    # Using heap algorighem
    if len(self.data) < self.k:
      heapq.heappush(self.data, elem)
    else:
      topk_small = self.data[0]
      if elem > topk_small:
        heapq.heapreplace(self.data, elem)

  def BtmK(self):
    return sorted([-x for x in self.data])

 感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關文章

  • Python爬蟲框架Scrapy常用命令總結(jié)

    Python爬蟲框架Scrapy常用命令總結(jié)

    這篇文章主要介紹了Python爬蟲框架Scrapy常用命令,結(jié)合實例形式總結(jié)分析了Scrapy框架中常見的全局命令與項目命令功能、使用方法及操作注意事項,需要的朋友可以參考下
    2018-07-07
  • Python+OpenCV六種實時圖像處理詳細講解

    Python+OpenCV六種實時圖像處理詳細講解

    OpenCV常用的圖像處理為閾值二值化、邊緣檢測、輪廓檢測、高斯濾波、色彩轉(zhuǎn)換、調(diào)節(jié)對比度。本文主要介紹了利用Python和OpenCV對實時圖像進行上述六種操作的詳細講解,感興趣的可以了解一下。
    2021-11-11
  • Django視圖之ORM數(shù)據(jù)庫查詢操作API的實例

    Django視圖之ORM數(shù)據(jù)庫查詢操作API的實例

    下面小編就為大家?guī)硪黄狣jango視圖之ORM數(shù)據(jù)庫查詢操作API的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • PyQt5?QLineEdit校驗器限制輸入實例代碼

    PyQt5?QLineEdit校驗器限制輸入實例代碼

    QLineEdit類是一個單行文本控件,可輸入單行字符串,可以設置回顯模式(Echomode)和掩碼模式,下面這篇文章主要給大家介紹了關于PyQt5?QLineEdit校驗器限制輸入的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • Python中使用matplotlib繪制各類圖表示例詳解

    Python中使用matplotlib繪制各類圖表示例詳解

    這篇文章主要給大家介紹了關于Python中使用matplotlib繪制各類圖表的相關資料,matplotlib是python的一個庫,內(nèi)部儲存了大量的函數(shù)用于繪制圖像,通常會與pandas和numpy庫一起使用,平常我們通常只是用里面的pyplot模塊,需要的朋友可以參考下
    2023-10-10
  • pycharm運行scrapy過程圖解

    pycharm運行scrapy過程圖解

    這篇文章主要介紹了pycharm運行scrapy過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • opencv-python 讀取圖像并轉(zhuǎn)換顏色空間實例

    opencv-python 讀取圖像并轉(zhuǎn)換顏色空間實例

    今天小編就為大家分享一篇opencv-python 讀取圖像并轉(zhuǎn)換顏色空間實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python爬蟲爬取網(wǎng)頁數(shù)據(jù)并解析數(shù)據(jù)

    python爬蟲爬取網(wǎng)頁數(shù)據(jù)并解析數(shù)據(jù)

    這篇文章主要介紹了python爬蟲如何爬取網(wǎng)頁數(shù)據(jù)并解析數(shù)據(jù),幫助大家更好的利用爬蟲分析網(wǎng)頁,感興趣的朋友可以了解下
    2020-09-09
  • Python文件的操作示例的詳細講解

    Python文件的操作示例的詳細講解

    本問重點講解了Python文件的讀寫原理、常用文件打開模式、文件對象的常用方法和目錄的相關操作詳細講解,對Python文件操作相關知識感興趣的朋友跟隨小編一起看看吧
    2021-04-04
  • python基于FTP實現(xiàn)文件傳輸相關功能代碼實例

    python基于FTP實現(xiàn)文件傳輸相關功能代碼實例

    這篇文章主要介紹了python基于FTP實現(xiàn)文件傳輸相關功能代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09

最新評論