Python | bisect を使って「値が存在するかどうか」を判定する方法

Python
スポンサーリンク

bisect は「挿入位置」を返すので、その位置を使って 値が存在するかどうか をチェックできます。


基本の考え方

  • bisect_left(a, x) は「x を挿入すべき左側の位置」を返す。
  • その位置の要素が x と一致すれば、値は存在する
  • 一致しなければ、値は存在しない

具体例

import bisect

data = [10, 20, 30, 40, 50]  # ソート済みリスト
target = 30

# 挿入位置を調べる
pos = bisect.bisect_left(data, target)

# 存在チェック
if pos < len(data) and data[pos] == target:
    print(f"{target} は存在します(インデックス {pos})")
else:
    print(f"{target} は存在しません")
Python

実行結果

30 は存在します(インデックス 2)

存在しない場合の例

target = 35
pos = bisect.bisect_left(data, target)

if pos < len(data) and data[pos] == target:
    print(f"{target} は存在します")
else:
    print(f"{target} は存在しません")
Python

実行結果

35 は存在しません

まとめ

  • bisect_left で挿入位置を取得
  • その位置の値がターゲットと一致すれば「存在する」
  • 一致しなければ「存在しない」

👉 この方法は ソート済みリスト に対して高速に存在チェックできるので、大規模データでも効率的です。

Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました