码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-12-28 12:03:30      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:color   counter   generate   name   nbsp   dom   出现   collect   uniq   

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 获得列表中每个元素出现次数的最快方法

标签:color   counter   generate   name   nbsp   dom   出现   collect   uniq   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!