是什么使集合比列表更快?

发布于 2021-01-29 16:24:53

python Wiki上说:“使用集和字典进行成员资格测试比搜索序列O(n)更快,O(1)。测试“ a in
b”时,b应该是集合或字典,而不是列表或元组。”

每当速度在我的代码中很重要时,我就一直使用集代替列表,但是最近我一直在想为什么集比列表快得多。任何人都可以解释一下,或者让我指向可以解释这一点的消息源,这是为了在python中更快地进行设置吗?

关注者
0
被浏览
47
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    集是使用哈希表实现的。每当将对象添加到集合中时,都会使用要添加的对象set的哈希值来确定对象在内存中的位置。在测试成员资格时,基本上需要做的只是查看对象是否在其哈希确定的位置,因此此操作的速度不取决于集合的大小。相反,对于列表,需要搜索整个列表,随着列表的增长,列表的搜索速度会变慢。

    这也是集合不保留您添加的对象顺序的原因。

    请注意,集合通常不会比列表快—成员资格测试对于集合来说更快,因此删除元素也是如此。只要您不需要这些操作,列表通常就会更快。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看