ホームページ > バックエンド開発 > Python チュートリアル > Python で二分検索を使用して、ソートされたリスト内の項目の存在を効率的に確認するにはどうすればよいですか?

Python で二分検索を使用して、ソートされたリスト内の項目の存在を効率的に確認するにはどうすればよいですか?

DDD
リリース: 2024-11-30 04:56:11
オリジナル
293 人が閲覧しました

How Can I Efficiently Check for Item Presence in a Sorted List Using Binary Search in Python?

明示的な項目存在チェックを使用した Python の二分検索 (二分)

Python の bisect モジュールは、bisect_left などの二分検索を実行するための関数を提供しますそしてbisect_right。ただし、これらの関数は、検索対象の項目がリストに存在しない場合でも位置を返します。項目の有無のみが必要な場合は、より明示的なチェックが必要です。

1 つのアプローチは、bisect_left を使用して、返された位置にある項目がターゲットと一致するかどうかを確認することです。ただし、この方法では、ターゲットがリスト内の最大の要素より大きい場合の境界チェックなど、さらに複雑になります。

よりシンプルで直接的な解決策は、明示的にチェックするカスタム二分探索関数を実装することです。結果を返す前にアイテムの存在を確認します。以下に例を示します。

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  # don't walk off the end
ログイン後にコピー

この関数は、ソートされたリスト a、ターゲット値 x、およびオプションで検索の下限と上限を受け取ります。 bisect_left を使用して x の挿入ポイントを見つけ、その位置にある項目がターゲットと一致するかどうかを確認します。一致するものが見つかった場合、関数は位置を返します。それ以外の場合は、項目が存在しないことを示す -1 を返します。

この明示的なチェックを組み込むことで、不要なオーバーヘッドや制限を導入することなく、並べ替えられたリスト内の項目の有無を効率的に判断できます。

以上がPython で二分検索を使用して、ソートされたリスト内の項目の存在を効率的に確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート