答案 0 :(得分:14)
如果要比较不同的python方法,例如in
运算符与.index()
,请使用timeit
module来测试速度差异。 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