gpt4 book ai didi

Python collections.Counter() 运行时

转载 作者:行者123 更新时间:2023-12-01 11:22:36 24 4
gpt4 key购买 nike

我只是遇到了一个需要列出 list 的问题,例如l = [1, 2, 3, 4],转换成 dic,例如{1:1、2:1、3:1、4:1}。我只想知道我应该使用 collections.Counter() 还是自己写一个循环来做到这一点。内置方法比自己写循环快吗?

最佳答案

您可以随时使用 timeit 测试是否更快。模块。在 Python 3 中,Counter object 具有 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 collections.Counter() 运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40513659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com