Pythonでは、次のようなin
キーワードの効率はどうですか。
a = [1, 2, 3]
if 4 in a:
...
右手に依存します オペランド :
演算子
in
および_not in
_は、コレクションのメンバーシップをテストします。 [...]従来、コレクションメンバーシップテストはシーケンスにバインドされていました。コレクションがシーケンスであり、そのオブジェクトに等しい要素を含む場合、オブジェクトはコレクションのメンバーです。ただし、他の多くのオブジェクトタイプでは、シーケンスにならずにメンバーシップテストをサポートすることは理にかなっています。特に、辞書(キー用)およびセットはメンバーシップテストをサポートしています。
クラスは 特別なメソッド___contains__
_ を実装してデフォルトの動作をオーバーライドし(シーケンスを反復)、したがって、容器。
メンバーシップテスト演算子(
in
および_not in
_)は通常、シーケンスの反復として実装されます。ただし、コンテナオブジェクトは、より効率的な実装で次の特別なメソッドを提供できます。これにより、オブジェクトをシーケンスにする必要もなくなります。
例にはリストがあるため、リストが繰り返され、一致が見つかるかリストがなくなるまで各要素が比較されます。時間の複雑さは通常O(n)
です。