このサイトから、list.index()はリスト全体の線形検索であると書かれています。
in
そしてそれも線形のようです。
どちらか一方を使用することに利点はありますか?
in
演算子となど、さまざまなPythonアプローチを比較する場合は、モジュール.index()
を使用して速度の違いをテストします。Pythonデータ型の複雑さは、http: //wiki.python.org/moin/TimeComplexityに記載されています。timeit
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