首页 > 编程语言 > 详细

python 获得列表中每个元素出现次数的最快方法

时间:2017-12-28 11:08:22      阅读:310      评论:0      收藏:0      [点我收藏+]
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)

 

python 获得列表中每个元素出现次数的最快方法

原文:https://www.cnblogs.com/peter1994/p/8134075.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!