ホームページ > バックエンド開発 > Python チュートリアル > この Python 二分探索関数は要素を見つけますか?

この Python 二分探索関数は要素を見つけますか?

Mary-Kate Olsen
リリース: 2024-11-28 16:44:11
オリジナル
266 人が閲覧しました

Does This Python Binary Search Function Find the Element?

Python の二分探索 (二分法)

ソートされたリストまたはタプルに要素が存在するかどうかを判断することは、プログラミングにおける一般的なタスクです。 Python は二分検索用の bisect モジュールを提供しますが、その bisect_left 関数と bisect_right 関数は、項目が見つからない場合でも位置を返します。このニーズに対処するために、明示的にブール値を返すバイナリ検索の Python 実装が導入されました。

提案されたソリューション

binary_search 関数は、並べ替えられたリスト 'a' を受け取ります。 、検索する要素「x」、およびオプションの検索範囲の開始位置と終了位置「lo」と「hi」。 bisect モジュールの bisect_left 関数を使用して、リスト 'a' 内の 'x' の挿入ポイント 'pos' を見つけます。

'pos' が 'hi' より小さく、要素が 'pos にある場合' が 'x' に等しい場合、'x' が見つかり、リスト内のその位置のインデックスとして 'pos' が返されます。ただし、'pos' がリストの最後に達した場合 (つまり、'pos' が 'hi' に等しい)、'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  # don't walk off the end
ログイン後にコピー

使用例

たとえば、並べ替えられたリスト 'a' と検索対象の要素 'x' が与えられた場合、 binary_search 関数は次のように使用できます:

result = binary_search(a, x)

if result == -1:
    print("Element not found")
else:
    print("Element found at index", result)
ログイン後にコピー

この簡潔な Python 関数は、二分検索の単純さと効率を維持しながら、ソートされたリスト内の要素の存在をチェックする二分検索を実行する便利な方法を提供します。

以上がこの Python 二分探索関数は要素を見つけますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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