2012-11-24 26 views
4

從這個site,它說list.index()是一個線性搜索整個列表。在列表,運算符或索引()中搜索項目有什麼更快?

它也好像in也是線性的。

使用其他優勢有什麼優勢嗎?

+0

一個區別是'list.index()'返回你是列表中元素的索引。 –

+0

而且看起來這個鏈接被破壞了。請檢查一下。 –

+0

'index()'返回索引,'in'返回'True'或'False',否則二分搜索是好的,如果你想優化'log n'。 –

回答

12

如果要比較不同的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 
相關問題