python - Python 的 `in` 关键字是否执行线性搜索?

标签 python algorithm keyword

<分区>

Python 如何使用 in 关键字检查给定值是否存在于可迭代对象中。它执行线性搜索吗?喜欢:

def naive(iterable, val):
    for i in range(len(l)):
        if iterable[i]==val:
            return True
    return False

?或者它有不同的方式来做到这一点。除了线性搜索?

最佳答案

Python 的 in 运算符调用容器上的 __contains__ 魔法函数。这是针对不同的容器以不同的方式实现的。

对于strings、lists和tuples,这是一个线性搜索(O(N) ),尽管因为它是用 C 实现的,所以它可能比您在问题中使用的纯 Python 更快。

对于 setdict,它是一个哈希表查找,速度要快得多(O(1) 平均情况).

其他容器将具有不同的性能特征。我认为标准库中没有,但平衡树数据结构可能是 O(log N)

关于python - Python 的 `in` 关键字是否执行线性搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15330969/

相关文章:

python - 基于概率做出选择 - Python

python - 在c中读取python的全局变量

javascript - Codility Ladder javascript - 不理解将答案从 37% 跳到 100% 的细节

以最高效率访问无向图中所有节点的算法?

php - 使用 php 将 .xml 的一部分导入到 sql 数据库

seo - 防止谷歌得到错误的关键字

python - Python 的 a, b = b, a 是如何工作的?

python - 使用 Python : excluding certain outputs (webpage titles)

algorithm - 根据输入数字生成随 secret 钥

go - 为什么 'new'和 'make'不是保留关键字?