python - 是什么让集合比列表更快?

标签 python list set

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

每当速度在我的代码中很重要时,我一直在使用集合代替列表,但最近我一直想知道为什么集合比列表快得多。谁能解释一下,或者指向一个可以解释的来源,python 的幕后到底发生了什么以使集合更快?

最佳答案

list:想象一下,你正在衣柜里找 socks ,但你不知道 socks 在哪个抽屉里,所以你必须通过以下方式搜索抽屉抽屉直到你找到它们(或者你可能永远不会这样做)。这就是我们所说的 O(n),因为在最坏的情况下,您会查看所有抽屉(其中 n 是抽屉的数量)。

set:现在,假设您还在衣橱里寻找 socks ,但现在您知道 socks 在哪个抽屉里了,比如在第三个抽屉里.因此,您只需在第三个抽屉中搜索,而不是在所有抽屉中搜索。这就是我们所说的 O(1),因为在最坏的情况下,您只会看到一个抽屉。

关于python - 是什么让集合比列表更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8929284/

相关文章:

python - 如何使用python中的validate_email模块验证电子邮件是否处于事件状态

python - TensorFlow 仅适用于 GPU 0

java - 如何在Java中使用assertEquals测试Set的元素?

python - 多个集合并集以及列表理解

python - 选择 numpy 数组的列

python - 获取异常的名称以及错误

python - 在 Python 中计算每个时间范围内的事件

r - 将数据框转换为未命名列表

python - 使用 `with` 语句命名列表元素

c++ - 如何从多个 vector 中找到不相同的元素?