最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python heapq使用詳解及實(shí)例代碼

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

 Python heapq 詳解

Python有一個(gè)內(nèi)置的模塊,heapq標(biāo)準(zhǔn)的封裝了最小堆的算法實(shí)現(xiàn)。下面看兩個(gè)不錯(cuò)的應(yīng)用。

小頂堆(求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小)

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

算法實(shí)現(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])

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

相關(guān)文章

  • Python自動(dòng)創(chuàng)建Markdown表格使用實(shí)例探究

    Python自動(dòng)創(chuàng)建Markdown表格使用實(shí)例探究

    Markdown表格是文檔中整理和展示數(shù)據(jù)的重要方式之一,然而,手動(dòng)編寫大型表格可能會(huì)費(fèi)時(shí)且容易出錯(cuò),本文將介紹如何使用Python自動(dòng)創(chuàng)建Markdown表格,通過示例代碼詳細(xì)展示各種場景下的創(chuàng)建方法,提高表格生成的效率
    2024-01-01
  • python 劃分?jǐn)?shù)據(jù)集為訓(xùn)練集和測試集的方法

    python 劃分?jǐn)?shù)據(jù)集為訓(xùn)練集和測試集的方法

    今天小編就為大家分享一篇python 劃分?jǐn)?shù)據(jù)集為訓(xùn)練集和測試集的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • TensorFlow實(shí)現(xiàn)數(shù)據(jù)增強(qiáng)的示例代碼

    TensorFlow實(shí)現(xiàn)數(shù)據(jù)增強(qiáng)的示例代碼

    ?TensorFlow數(shù)據(jù)增強(qiáng)?是一種通過變換和擴(kuò)充訓(xùn)練數(shù)據(jù)的方法,本文主要介紹了TensorFlow實(shí)現(xiàn)數(shù)據(jù)增強(qiáng)的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解游戲
    2024-08-08
  • python產(chǎn)生模擬數(shù)據(jù)faker庫的使用詳解

    python產(chǎn)生模擬數(shù)據(jù)faker庫的使用詳解

    這篇文章主要介紹了python產(chǎn)生模擬數(shù)據(jù)faker庫的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • python對(duì)離散變量的one-hot編碼方法

    python對(duì)離散變量的one-hot編碼方法

    今天小編就為大家分享一篇python對(duì)離散變量的one-hot編碼方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • python serial串口通信示例詳解

    python serial串口通信示例詳解

    Python的serial庫是一個(gè)用于串口通信的強(qiáng)大工具,它提供了一個(gè)簡單而靈活的接口,可以方便地與串口設(shè)備進(jìn)行通信,包括與驅(qū)動(dòng)電機(jī)進(jìn)行通信,這篇文章主要介紹了python serial串口通信,需要的朋友可以參考下
    2023-12-12
  • python Opencv將圖片轉(zhuǎn)為字符畫

    python Opencv將圖片轉(zhuǎn)為字符畫

    這篇文章主要為大家詳細(xì)介紹了python Opencv將圖片轉(zhuǎn)為字符畫的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 淺談python日志的配置文件路徑問題

    淺談python日志的配置文件路徑問題

    下面小編就為大家分享一篇淺談python日志的配置文件路徑問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Django數(shù)據(jù)庫操作的實(shí)例(增刪改查)

    Django數(shù)據(jù)庫操作的實(shí)例(增刪改查)

    下面小編就為大家?guī)硪黄狣jango數(shù)據(jù)庫操作的實(shí)例(增刪改查)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • pandas df.sample()的使用

    pandas df.sample()的使用

    本文主要介紹了pandas df.sample()的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08

最新評(píng)論

四平市| 平定县| 金溪县| 和静县| 家居| 莱芜市| 昌邑市| 沁源县| 格尔木市| 宜阳县| 龙游县| 廊坊市| 博乐市| 东兰县| 杭锦旗| 九江市| 杂多县| 永泰县| 永仁县| 招远市| 蒲城县| 黄大仙区| 靖远县| 天峻县| 绥棱县| 泰顺县| 浮山县| 开封市| 安龙县| 美姑县| 新河县| 嫩江县| 九龙坡区| 龙游县| 上林县| 和田市| 清涧县| 商洛市| 谢通门县| 华阴市| 阿克|