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)

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

时间: 2024-10-08 18:04:48

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

Python对列表中字典元素排序

问题起源 json对象a,b a = '{"ROAD": [{"id": 123}, {"name": "no1"}]}' b = '{"ROAD": [{"name": "no1"}, {"id": 123}]}' 特点:a,b对应的Python的对象中键对应的键值——列表中包含着相同的字典元素,但是唯一不同的是顺序不同.如果忽略顺序,如何判断两

python——删除列表中的元素

在python中,删除列表元素的方法有三种,分别为remove(),del(),pop()函数 (1)remove() >>> name = ['小明','小华','小红','小李','小霞','小文'] >>> name.remove('小红') >>> name ['小明', '小华', '小李', '小霞', '小文'] remove()函数里面的参数必须是列表中已有的元素值. (2)del() >>> name = ['小明'

python实现列表中各元素的拼接

功能要求: 假定有下面这样的列表:    names = ['pear', 'peach', 'banana', 'apple']    输出结果为:'I have pear, peach, banana and apple.' 源代码如下: names = ['fentiao', 'fendai', 'fensi', 'apple'] print 'I have ' + ','.join(names[:-1]) + ' and ' + names[-1] 结果如下: 原文地址:https://

Python统计列表中的重复项出现的次数的方法

前言 在实际工作和学习中,经常会遇到很多重复的数据,但是我们又必须进行统计,所及这里简单介绍一下统计列表中重复项的出现次数的简单方法. 实例 本文实例展示了Python统计列表中的重复项出现的次数的方法,是一个很实用的功能,适合Python初学者学习借鉴.具体方法如下: #方法1: mylist = [1,2,2,2,2,3,3,3,4,4,4,4] myset = set(mylist)  #myset是另外一个列表,里面的内容是mylist里面的无重复 项 for item in myset

python 统计list中各个元素出现的次数

python 统计list中各个元素出现的次数利用Python字典统计利用Python的collection包下Counter的类统计利用Python的pandas包下的value_counts的类统计利用字典dict来完成统计举例: a = [1, 2, 3, 1, 1, 2]dict = {}for key in a: dict[key] = dict.get(key, 0) + 1print dict12345输出结果: >>>{1: 3, 2: 2, 3: 1}1利用Python

《Python CookBook2》 第四章 Python技巧 - 若列表中某元素存在则返回之 && 在无须共享引用的条件下创建列表的列表

若列表中某元素存在则返回之 任务: 你有一个列表L,还有一个索引号i,若i是有效索引时,返回L[i],若不是,则返回默认值v 解决方案: 列表支持双向索引,所以i可以为负数 >>> def list_get(L,i,v=None): if -len(L)<= i < len(L): return L[i] else: return v >>> list_get([1,2,3,4,5,6],3) 4 异常机制 >>> def list2_ge

Python练习题4(列表去重):[5,3,4,&#39;ok&#39;,4,3,&#39;abc&#39;,8,52,&#39;ok&#39;]去除列表中重复内容 方法一:使用set 方法二:不使用set,自己写方法

方法一:利用集合去重 1 list1 = [5,3,4,'ok',4,3,'abc',8,52,'ok'] 2 list1=list(set(list1)) 3 print(list1) 方法二:此方法略微冗余,先判断元素是否重复,再将重复元素提取并保存到新列表中,再for 新建的列表元素,删除原列表 1 def list_dup(ls): 2 list2 = [] 3 length = len(ls) #获取列表元素个数 4 for i in range(0,length-1): 5 for

python 删除list中重复元素

list = [1,1,3,4,6,3,7] 1. for s in list: if list.count(s) >1: list.remove(s) 2. list2=[] for s in list: if s not in list2: list2.append(s) print list2 3. list2=[] for s in list: list2.append(s) print list2 python 删除list中重复元素

判断数组中不同元素出现次数

群里的提问,简单直接的流程式实现: var arr1=[1,1,1,1,1,2,2,2,2,3,3,3,4,4,5,6,7,7,'1','1']; var res = []; var btn; for(var i =0;i<arr1.length;i++){ btn = false; for(var j = 0;j<res.length;j++){ if(arr1[i] === res[j].val){ res[j].count += 1; btn = true; break; } } if(