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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (6)

我有两个字符串:

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

哪个会运行得更快?

set(a)==set(b)

要么

from collections import Counter

Counter(a)==Counter(b)

为什么?有没有什么运行得更快?

提问于
用户回答回答于

set比较会跑得更快。这有两个主要原因:

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

2)与a 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

因此很难在这方面给出更多提示。

用户回答回答于

如果要对这些简单表达式进行基准测试,可以使用timeit模块。或者更好的是,如果你安装了IPython,你可以简单地使用timeit magic命令,例如:

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

扫码关注云+社区

领取腾讯云代金券