python 實現 topk算法

這里的版本是針對的一個class的某一個成員變量進行的:
關于如何定義對象的比較方法,請參考往期文章:python定義對象的比較方法

class province_room_quality_data:def __init__(self, room, quality):self.room = roomself.quality = qualitydef __lt__(self, other):return self.quality < other.quality

topk代碼:

from typing import List
import heapq
# 對province_room_quality_data對象的TopK排序算法
def top_k(arr: List[province_room_quality_data], k: int) -> List[province_room_quality_data]:if k == 0:return list()hp = [item for item in arr[:k]]heapq.heapify(hp)for i in range(k, len(arr)):if hp[0].quality < arr[i].quality:heapq.heappop(hp)heapq.heappush(hp, arr[i])ans = [x for x in hp]return ans

最后可以得到基于quality的TopK大的對象數組,注意這里的對象數組并不是基于quality有序的,所以如果最后需要有序的話還得再執行一下sort

newList = top_k(list, 20)
newList.sort(reverse=True)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/376697.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376697.shtml
英文地址,請注明出處:http://en.pswp.cn/news/376697.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2013年,未知的旅程

去年就開始策劃要辭職到外面去闖一闖&#xff0c;今年年初在上一家公司毅然辭職了&#xff0c;理由是自己需要出去鍛煉鍛煉。 帶著一個月的工資&#xff0c;和一點積蓄&#xff0c;還有一個女朋友來到了這個我以前都沒有來過的城市-深圳。 聽好多人都說過深圳是個好地方&#x…

SQL基礎

經過這幾天我才發現原來我最弱的是數據庫&#xff0c;好了現在就來補補吧 SQL(Struct Query Language) 結構化查詢語言&#xff0c;屬于第四代語言&#xff08;接近于自然語言&#xff09;符合主謂賓定狀補 DDL (Data Define L)數據定義語言,創建一個數據庫&#xff0c;創建一個…

主成分分析資料

推薦一份介紹主成分分析的資料&#xff1a;http://www.cs.otago.ac.nz/cosc453/student_tutorials/principal_components.pdf&#xff0c;寫的很好&#xff01; 在R語言中使用PCA&#xff1a;http://www.cnblogs.com/bigshuai/archive/2012/06/18/2553808.html 轉載于:https://…

關于mysql的binlog寫滿磁盤而導致mysql無法連接的問題。

問題描述與追蹤 首先是mysql連不上&#xff1a; [rootVM-90-225-centos ~]# mysql -uroot -p Enter password: ERROR 2002 (HY000): Cant connect to local MySQL server through socket /var/lib/mysql/mysql.sock (111)然后查看mysql的狀態&#xff1a; [rootVM-90-225-c…

.NET系統架構改造的經驗和教訓

轉自&#xff1a; http://robbinfan.com/blog/43/rid-off-dotnet-experience 在互聯網行業&#xff0c;基于Unix/Linux的網站系統架構毫無疑問是當今主流的架構解決方案&#xff0c;這不僅僅是因為Linux本身足夠的開放性&#xff0c;更因為圍繞傳統Unix/Linux社區有大量的成熟開…

yum error :No module named yum

Yum&#xff08;全稱為 Yellow dog Updater, Modified&#xff09;是一個在Fedora和RedHat以及SUSE、CentOS中的Shell前端軟件包管理器。基於RPM包管理&#xff0c;能夠從指定的服務器自動下載RPM包并且安裝&#xff0c;可以自動處理依賴性關系&#xff0c;并且一次安裝所有依賴…

403報錯解決方案

403報錯解決方案 服務器使用yum install httpd時出現403報錯&#xff0c;參考了幾個文章&#xff1a; 首先根據這篇文章&#xff1a; devcloud上yum install 安裝軟件報錯403 打開 /root/.bashrc 文件&#xff0c;然后在最末尾可以看到 no_proxy&#xff1a; export no_pr…

控制器中獲取Field值

在ASP.NET MVC程序中&#xff0c;我們需要POST Data到制器中&#xff0c;是有很多方法。但是我們想在控制器中&#xff0c;獲取Feild值呢&#xff1f;怎樣獲取&#xff1f;你可以留意到有一個類FormCollection。它能幫助到我們解決這個問題。 舉個簡單的例子。在ASP.NET MVC應用…

new(std::nothrow)

new(std::nothrow) 顧名思義&#xff0c;即不拋出異常&#xff0c;當new一個對象失敗時&#xff0c;默認設置該對象為NULL&#xff0c;這樣可以方便的通過if(p NULL) 來判斷new操作是否成功 普通的new操作&#xff0c;如果分配內存失敗則會拋出異常&#xff0c;雖然后面一般也…

如何刪除cygwin

網上大多數方法在不具備用戶權限獲取的情況下都不能工作。 國外有人通過很簡單的命令行就實現了&#xff1a; Here’s how to remove Cygwin once and for all. You will need Cygwin cmd.exe 2 minutesRun cmd, navigate to C:\ (or other disk, if you have installed it in …

私有RTP協議和標準流媒體協議

先介紹下RTP協議&#xff1a; 實時傳輸協議RTP&#xff08;Real-time Transport Protocol&#xff09;是一個網絡傳輸協議 &#xff0c;該協議詳細說明了在互聯網上傳遞音頻和視頻的標準數據包格式 。 RTP標準定義了兩個子協議 &#xff0c;RTP和RTCP 數據傳輸協議RTP&#xff…

【python】入門學習(五)

字符串&#xff1a; 正索引&#xff0c;從0開始 和 負索引&#xff0c;從-1開始 >>> s apple >>> s[0] a >>> s[1] p >>> s[2] p >>> s[3] l >>> s[4] e >>> s[-1] e >>> s[-2] l >>> s[-3…

實現 winform 異步跨線程訪問UI控件

在開發winform時經常會用到多線程防止界面出現假死現象&#xff0c;比如當你單擊某個按鈕時&#xff0c;需要執行很多代碼&#xff0c;但是在執行過程中想實時的將當前執行的情況報告給用戶&#xff0c;類型進度條或文本什么的。 這個時候很顯然&#xff0c;如果你把要實現的內…

JavaScript對象的創建總結

方式 缺點 優點 基于已有對象擴充屬性和方法 不可重用&#xff0c;沒有約束 無 工廠方法 檢測不出是什么的實例 簡單封裝&#xff0c;可以傳參 構造方法 每創建一個對象就有開辟存放方法的空間 能通過instanceof檢測出實例類型&#xff0c;可以傳參 原型方式 不能…

從WebRtc學習RTP協議

文章目錄TCP為何不適用于實時音視頻UDP->RTPRTP協議結構JittbufferRTP擴展頭RTP填充數據參考TCP為何不適用于實時音視頻 可靠性是以犧牲實時性為代價的。按照TCP原理&#xff0c;當出現極端網絡情況時&#xff0c;理論上每個包的時延可達到秒級以上&#xff0c;而且這種時延…

我的第一個android應用上架,紀念一下

好久沒有寫博客了&#xff0c;最近一直在忙著弄自己的“汽車小助手“http://www.mumayi.com/android-318299.html軟件&#xff0c;終于在今天上架了&#xff0c;盡管今天的廣告收入只有5毛&#xff0c;寫個博客紀念一下。里面嵌入了萬普平臺的廣告&#xff0c;大家都懂得。一天…

內核態與用戶態【轉載】

原文&#xff1a;http://blog.csdn.net/skywalkzf/article/details/5185442 內核態與用戶態是操作系統的兩種運行級別&#xff0c;intel cpu提供Ring0-Ring3三種級別的運行模式。Ring0級別最高&#xff0c;Ring3最低。其中特權級0&#xff08;Ring0&#xff09;是留給操作系統代…

解決ListView異步加載數據之后不能點擊的問題

在ListView的onScroll事件中執行異步加載數據&#xff0c;然后使用notifyDataSetChange()函數更新適配器&#xff0c;之后發現listView不能點擊了&#xff0c;這問題苦惱了我半天。最后在一篇博文中發現調用listView的requestFocusFromTouch()函數終于解決了這問題。 Java代碼…