def bisect(a, x, lo=0, hi=None):
if lo < 0:
raise ValueError('lo must be non-negative')
if hi is None:
hi = len(a)
while lo < hi:
mid = (lo + hi) // 2
if a[mid] < x:
lo = mid + 1
else:
hi = mid
return lo
mylist = [1, 2, 3, 7, 9, 11, 33]
print(bisect(mylist, 3))
import bisect
mylist = [1, 2, 3, 7, 9, 11, 33]
print(bisect.bisect(mylist, 3))
import bisect
a = [1, 2, 4, 5]
x = 3
# x를 a에 삽입할 위치를 찾습니다.
pos = bisect.bisect_left(a, x)
print('bisect_left:', pos) # x를 삽입할 가장 왼쪽 위치 출력
pos = bisect.bisect_right(a, x)
print('bisect_right:', pos) # x를 삽입할 가장 오른쪽 위치 출력
# 실제로 x를 리스트에 삽입하지 않고 위치만 찾는 예제입니다.
# x를 실제로 삽입하려면 a.insert(pos, x)를 사용할 수 있습니다.
import bisect
a = [1, 2, 4, 4, 5]
x = 4
# x를 a에 삽입할 위치를 찾습니다.
pos = bisect.bisect(a, x) # bisect_right와 동일합니다.
print('Insert position:', pos) # 출력: 5
참고
--