4

从这个站点,它说 list.index() 是对列表的线性搜索。

而且它似乎in也是线性的。

使用其中一个有什么优势吗?

4

1 回答 1

14

如果要比较不同的 python 方法,例如inoperator 与.index(),请使用该timeit模块来测试速度差异。Python 数据类型的复杂性记录在http://wiki.python.org/moin/TimeComplexity上。

in请注意,和之间有很大的不同.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
于 2012-11-24T10:37:46.063 回答