Advertisement

python解决topk问题(基于Python)

阅读量:

方法1:
借助Python语言内置的heapq模块进行实现

复制代码
    import heapq
    import random
    
    
    class TopKHeap(object):
    def __init__(self,k):
        self.data=[]
        self.k=k
    
    def push(self,num):
    
        if len(self.data)<self.k:
            heapq.heappush(self.data,num)
        else:
            top_min=self.data[0]
            if num>top_min:
                heapq.heapreplace(self.data,num)
    def topk(self):
    
        return list(reversed([heapq.heappop(self.data) for i in range(self.k)]))
    
    if __name__ == '__main__':
    heap=TopKHeap(10)
    for i in range(100000):

全部评论 (0)

还没有任何评论哟~