Python 在列表、运算符或索引()中搜索项目的速度更快的是什么?

Python 在列表、运算符或索引()中搜索项目的速度更快的是什么?,python,performance,list,search,Python,Performance,List,Search,由此可知,list.index()是对列表的线性搜索 而且中的似乎也是线性的 使用一种方法比另一种方法有什么好处吗?如果您想比较不同的python方法,例如操作符中的与.index()中的,请使用测试速度差异。Python数据类型的复杂性记录在 请注意,中的和.index()之间有很大的区别;第一个返回布尔值,后一个返回找到的项的索引(整数),否则将引发异常。因此,对于一般情况,速度(稍微)较慢: $ python -mtimeit -s 'a = list(range(10000))' '50

由此可知,list.index()是对列表的线性搜索

而且中的
似乎也是线性的


使用一种方法比另一种方法有什么好处吗?

如果您想比较不同的python方法,例如
操作符中的
.index()
中的
,请使用测试速度差异。Python数据类型的复杂性记录在

请注意,
中的
.index()
之间有很大的区别;第一个返回布尔值,后一个返回找到的项的索引(整数),否则将引发异常。因此,对于一般情况,速度(稍微)较慢:

$ python -mtimeit -s 'a = list(range(10000))' '5000 in a'
10000 loops, best of 3: 107 usec per loop
$ python -mtimeit -s 'a = list(range(10000))' 'a.index(5000)'
10000 loops, best of 3: 111 usec per loop
如果需要优化成员资格测试,请使用
set()

$ python -mtimeit -s 'a = set(range(10000))' '5000 in a'
10000000 loops, best of 3: 0.108 usec per loop

一个不同之处是
list.index()
返回列表中元素的索引。看起来链接断开了。请查看。
index()
返回索引和
中的
返回
True
False
,否则如果需要优化,二进制搜索很好,
log n
@RohitJain:link-fixed(在末尾删除斜杠)。@MartijnPieters。我认为你可以从这里的所有评论中做出很好的回答。