zoukankan      html  css  js  c++  java
  • python 获得列表中每个元素出现次数的最快方法

    import collections
    import numpy as np
    import random
    import time
    
    
    def list_to_dict(lst):
        dic = {}
        for i in lst:
            dic[i] = lst.count(i)
        return dic
    
    
    def collect(lst):
        return dict(collections.Counter(lst))
    
    
    def unique(lst):
        return dict(zip(*np.unique(lst, return_counts=True)))
    
    
    def generate_data(num=1000000):
        return np.random.randint(num / 10, size=num)
    
    
    if __name__ == "__main__":
        t1 = time.time()
        lst = list(generate_data())
        t2 = time.time()
        print("generate_data took : %sms" % (t2 - t1))  # 本机实测0.12ms
    
        t1 = t2
        d1 = unique(lst)
        t2 = time.time()
        print("unique took : %sms" % (t2 - t1))  # 本机实测0.42ms
    
        t1 = t2
        d2 = collect(lst)
        t2 = time.time()
        print("collect took : %sms" % (t2 - t1))  # 本机实测1.25ms
    
        t1 = t2
        d3 = list_to_dict(lst)
        t2 = time.time()
        print("list_to_dict took : %sms" % (t2 - t1))  # 本机实测...太慢了测不下去了
    
        assert(d1 == d2)
        assert(d1 == d3)
  • 相关阅读:
    希尔排序
    快速排序
    归并排序
    插入排序
    简单选择排序
    冒泡排序
    算法之时间复杂度和空间复杂度
    数据结构与算法思维导图
    rootfs根文件系统
    kernel 2.6.35.7向S5PV210移植
  • 原文地址:https://www.cnblogs.com/peter1994/p/8134075.html
Copyright © 2011-2022 走看看