复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57#coding:utf8 __author__ = 'libingxian' __date = "20170416" import random import time """ 最近碰到一个需求,对数据出现的次数进行统计 """ # 原始方法1:一开始使用比较笨的方法,把原始数据存入列表,然后循环遍历,效率较低,耗时较长 def countFunc1(list1): se = set(list1) # 去重,找出种子元素 #print se dict1 = {} t1 = time.time() for i in se: count = 0 # 为每个数据创建一个计数器 for j in list1: # 遍历原始数据 if i == j: count += 1 dict1[i] = count t2 = time.time() print "countFunc1 耗时:",t2 - t1 # print dict1 return dict1 # 方法2:使用python内置的集合模块,它提供了许多有用的集合类,其中有个Counter类,它默认对传入的数据元素进行计数,执行效率高 def countFunc2(list1): import collections t1 = time.time() listTmp = collections.Counter(list1) t2 = time.time() print "countFunc2 耗时:",t2 - t1 # print listTmp return listTmp # 制造测试数据 list1 = [] for i in range(100000): list1.append(random.randint(0,200)) countFunc1(list1) countFunc2(list1) """ 运行结果: countFunc1 耗时: 0.656000137329 countFunc2 耗时: 0.0349998474121 方法2比方法1执行效率大大提升了 ~O(∩_∩)O~ """
附上collections中Counter类初始化的说明:
最后
以上就是含糊羊最近收集整理的关于Python使用collections的Counter类对字符串、列表、字典的数据元素进行计数的全部内容,更多相关Python使用collections内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复