본문 바로가기
Language/Python

Python bisect.bisect_left()와 bisect.bisect_right

by brother_stone 2022. 9. 10.

 

bisect.bisect_left(a, x, lo=0, hi=len(a), *, key=None)

문서 내 설명: 정렬된 순서를 유지하도록 시퀀스 변수 a에 x를 삽입할 위치를 찾습니다. 매개 변수 lo  hi는 고려해야 할 리스트의 부분집합을 지정하는 데 사용될 수 있습니다; 기본적으로 전체 리스트가 사용됩니다. x가 a에 이미 있으면, 삽입 위치는 기존 항목 앞(왼쪽)이 됩니다. 반환 값은 a가 이미 정렬되었다고 가정할 때 list.insert()의 첫 번째 매개 변수로 사용하기에 적합합니다.

 

요약

a에 x가 존재할 때, x의 가장 처음인덱스를 반환한다.

a에 x가 존재하지 않을 때는 a에 x를 삽입했을 때 그 인덱스를 반환한다.

 

bisect.bisect_right(a, x, lo=0, hi=len(a), *, key=None)

a에 x가 존재할 때, x의 가장 마지막 인덱스 + 1을 반환한다.

a에 x가 존재하지 않을 때는 a에 x를 삽입했을 때 그 인덱스를 반환한다.

 

예시

from bisect import bisect_right, bisect_left

lst= [1, 2, 3, 3, 5, 9, 10, 11, 18, 22, 25, 32, 76]
print(lst)
print(bisect_left(lst,6)) #5
print(bisect_right(lst,21)) #9

 

from bisect import bisect_right, bisect_left

lst= [1, 2, 3, 3, 5, 9, 10, 11, 18, 22, 25, 32, 76]
print(lst)
print(bisect_left(lst,3)) #2
print(bisect_right(lst,3)) #4

 

from bisect import bisect_right, bisect_left

lst= [1, 2, 3, 3, 5, 9, 10, 11, 18, 22, 25, 32, 76]
print(lst)
print(bisect_left(lst,4)) #4
print(bisect_right(lst,4)) #4

 

출처:https://docs.python.org/ko/3/library/bisect.html