ホームページ >バックエンド開発 >Python チュートリアル >Python で真偽二分探索を効率的に実行するにはどうすればよいですか?
Python では、二分探索は bisect モジュールを通じて簡単に実行されます。ただし、リスト内の項目の存在を正確に示したい場合は、 bisect_left 関数と bisect_right 関数では十分ではない可能性があります。
このニーズに対処するために、Python ライブラリでは、二分検索専用に調整された専用関数は提供されていません。明示的な True/False 出力。したがって、カスタム ソリューションが必要です。
次のスニペットは、並べ替えられたリスト a に対して二分検索を実行し、見つかった場合はターゲット項目 x のインデックスを返す binary_search 関数を定義します。 x が存在しない場合は、-1 を返します:
from bisect import bisect_left def binary_search(a, x, lo=0, hi=None): if hi is None: hi = len(a) pos = bisect_left(a, x, lo, hi) # Find insertion position return pos if pos != hi and a[pos] == x else -1 # Check if x is there
この関数は bisect_left を利用して x の挿入ポイントを決定します。 x がリストに存在する場合、それはこの挿入ポイントに配置されます。これを確認するために、挿入ポイントの値が x と比較されます。それらが一致する場合、x が見つかり、そのインデックスが返されます。それ以外の場合は、x が存在せず、これを示すために -1 が返されます。
このカスタム関数は、リスト内の項目の存在を明確に True/False で示して二分検索を実行するための簡潔で効率的なソリューションを提供します。元の質問で特定されたニーズを満たす。
以上がPython で真偽二分探索を効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。