假设我有一个字符串列表和一组相同的字符串:
l = [str1, str2, str3, str4, ...]
s = set([str1, str2, st3, str4, ...])
我需要运行一个字符串比较,我有一个短语:comparephrase
我需要迭代列表或集合中的所有元素,并在comparephrase
和比较的字符串之间生成一个比率。我知道当我们进行成员资格测试时,set()
会更快。但是,我不是在做成员资格测试,而是比较我拥有的短语和列表/集合中的字符串。set()
是否仍然提供更快的速度?如果是,为什么?在我看来,这个集合实际上是一个里面有一个列表的集合。既然我们要在集合中迭代列表,那不是要花很长时间吗?在
Python集针对相等性测试和重复删除进行了优化,因此在其下面实现了一个哈希表。我相信这会使它比列表慢一点,如果你必须将每个元素与
comparephrase
进行比较;列表非常适合一个接一个地迭代每个元素。不过,这种差异在几乎任何情况下都可能微不足道。在我用
timeit
运行了一些测试,并且(虽然list
的执行速度稍快),但没有明显的区别:即使在多次尝试时,这些值仍然非常相同(
0.20
与0.19
)。在但是,创建集合的开销可能是significant。在
相关问题 更多 >
编程相关推荐