私は〜30の浮動小数点数のリストを持っています。特定のフロートが私のリストにあるかどうかを確認したい。例えば:私のコードでPython:アイテムがリスト内にあるかどうかを検索するより速い選択肢
1 >> # For the example below my list has integers, not floats
2 >> list_a = range(30)
3 >> 5.5 in list_a
False
4 >> 1 in list_a
True
ボトルネックは、アイテムが私のリストに何回ある場合、私は、検索ライン3である、と私はより高速な代替手段を必要としています。このボトルネックは私の時間の99%以上を占めます。
リストの代わりにlist_a
をセットするとコードを高速化できました。このラインを大幅にスピードアップする他の方法はありますか?
'list'を' set'(1回)にしてから、メンバーシップテストに 'set'を使うのが、これをスピードアップするための標準的な方法です。特定のケース(リストがソートされている場合は2分法)で役立つことができる他のものがありますが、他の「一般的な」解決策はありません。 – mgilson
Btw。メンバーシップをテストしてもよろしいですか?平等をチェックし、[浮動小数点数学は壊れていることが知られています](http://stackoverflow.com/questions/588004/is-floating-point-math-broken)。 –
[巨大なリスト(python)の検索/検索のための最も効率的な方法]の複製の可能性(http://stackoverflow.com/questions/2701173/most-efficient-way-for-a-lookup-search-in- a-huge-list-python) –