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で挿入位置を取得- その位置の値がターゲットと一致すれば「存在する」
- 一致しなければ「存在しない」
👉 この方法は ソート済みリスト に対して高速に存在チェックできるので、大規模データでも効率的です。


