Python集合。Counter()运行时 [英] Python collections.Counter() runtime
本文介绍了Python集合。Counter()运行时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
推荐答案
您始终可以使用timeit
模块测试是否更快。在Python3中,Counter
对象具有C语言性能改进,并且确实非常快:
>>> from timeit import timeit
>>> import random, string
>>> from collections import Counter, defaultdict
>>> def count_manually(it):
... res = defaultdict(int)
... for el in it:
... res[el] += 1
... return res
...
>>> test_data = [random.choice(string.printable) for _ in range(10000)]
>>> timeit('count_manually(test_data)', 'from __main__ import test_data, count_manually', number=2000)
1.4321454349992564
>>> timeit('Counter(test_data)', 'from __main__ import test_data, Counter', number=2000)
0.776072466003825
这里Counter()
快了2倍。
这就是说,除非您将代码的性能关键部分计算在内,否则请将重点放在可读性和可维护性上,在这方面,Counter()
比编写您自己的代码更容易获胜。
除此之外,Counter()
对象提供了字典之上的功能:它们可以被视为多集(您可以对计数器求和或减去,并产生并集或交集),并且它们可以有效地根据计数提供前N个元素。
这篇关于Python集合。Counter()运行时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文