哪个更快?设置比较还是计数器比较?为什么

时间:2019-06-26 00:31:25

标签: python python-2.7

我有两个字符串:

a = "hello world"
b = "world hello"

哪个会运行得更快?

set(a)==set(b)

from collections import Counter

Counter(a)==Counter(b)

为什么?而且有什么运行速度更快的吗?

2 个答案:

答案 0 :(得分:1)

当您要对诸如此类的简单表达式进行基准测试时,可以使用timeit模块。或更妙的是,如果安装了IPython,则可以简单地使用timeit magic命令,例如:

%timeit Counter(a)==Counter(b)

答案 1 :(得分:1)

set比较会运行得更快。造成这种情况的主要原因有两个:

1)与Counter()相比,set()中的信息更多

2)与Counter()相比,建立set()对象所需的操作更多。

粗略地说,Counter()是一个字典,由键值对组成。在Counter中,这些值具有计算键的出现次数的特殊含义。 相比之下,set()仅包含有关键的信息。


编辑

在解决您应该使用哪一个的问题时,这取决于您要实现的目标,因为两个表达式不相等:

from collections import Counter

a = "hello world"
b = "world helo"

set(a) == set(b)
# True

Counter(a) == Counter(b)
# False

因此,很难在这个方向上给出更多的提示。