Skip to main content
 首页 » 编程设计

python之Python "in"关键字排序列表的效率

2025年05月04日9dudu

如果我有一个已经排序的列表并使用 in 关键字,例如:

a = [1,2,5,6,8,9,10] 
print 8 in a 

我认为这应该进行顺序搜索,但我可以通过进行二分搜索来加快速度吗? 是否有一种 Python 式的方式来在排序列表中进行搜索?

请您参考如下方法:

标准库有 bisect 支持按排序序列搜索的模块。

但是,对于小型列表,我敢打赌 in 背后的 C 实现运营商会击败bisect .你必须用一堆常见的案例来衡量,以确定你的目标硬件上真正的盈亏平衡点......


值得注意的是,如果您可以摆脱无序的迭代(即 set ),那么您可以在 O(1) 中进行查找。平均时间(使用 in 运算符),与 O(logN) 序列的二分法相比和 in序列上的运算符 O(N) .而且,有了集合,您还可以避免首先对它进行排序的成本 :-)。