4

このサイトから、list.index()はリスト全体の線形検索であると書かれています。

inそしてそれも線形のようです。

どちらか一方を使用することに利点はありますか?

4

1 に答える 1

14

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
于 2012-11-24T10:37:46.063 に答える