Pythonで配列内に要素があることを確認したい
bisectが二分探索のライブラリとして紹介されているが、簡単に扱えない。
bisect.bisectは、要素を挿入する適切な位置を示すだけだ。
code:example.py
import bisect
print(bisect.bisect(3, 4, 5, 5)) # -> 3 print(biscet.bisect(3, 4, 5, 6)) # -> 3 bisect.bisectを使う場合
返ってきた値の意味を調べなければならない。
絶対に調べてください。調べなければバグが生まれます。
code: search_array.py
import bisect
search_number = 5
index = bisect.bisect(l, search_number)
if index + 1 == len(l):
if lindex == search_number: print(search_number) # この戻り値は、ソートされたリストの最後の要素が5だということを示していた
else:
print(-1) # この戻り値は、ソートされたリストの中に5が含まれないということを示していた
疑問
結局この関数は何がしたいの?
よくわからなかった
二分探索で存在確認をするには?
bisect.bisect_leftを使う場合
メモ
bisect_leftを使ったほうがいい
bisectはbisect_rightの別名である
bisect_rightは右側の値を返す
bisect_leftは自然と戻り値がindexになる
存在しない