ホームページ >バックエンド開発 >Python チュートリアル >Python で真偽二分探索を効率的に実行するにはどうすればよいですか?

Python で真偽二分探索を効率的に実行するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-26 01:40:141065ブラウズ

How Can I Efficiently Perform a True/False Binary Search in 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:日中 - ループ次の記事:日中 - ループ