Python bisect에 관하여

고승우·2023년 5월 15일
0

알고리즘

목록 보기
74/86
post-thumbnail

bisect 모듈에 관하여

이 모듈은 정렬된 리스트를 삽입 후에 다시 정렬할 필요 없도록 관리할 수 있도록 지원한다. 값비싼 비교 연산이 포함된 항목의 긴 리스트의 경우, 이는 일반적인 방법에 비해 개선된 것이다. 즉, 이분 탐색을 해주는 모듈이다.


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

정렬된 순서를 유지하도록 a에 x를 삽입할 위치를 찾는다. 들어갈 인덱스를 제공한다. 만약 같은 값이 있다면 같은 값들의 인덱스를 반환한다.

import bisect
a = [1, 2, 4, 5]
print(bisect.bisect_left(a, 2))

Output: 1


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

bisect_left()와 유사하지만, 삽입할 위치의 오른쪽 인덱스를 반환한다. 만약 같은 값이 있다면, 같은 값들의 오른쪽 인덱스를 반환한다.

import bisect
a = [1, 2, 2, 4, 5]
print(bisect.bisect_right(a, 2))

Output: 3


insort_left(a, x, lo=0, hi=len(a), *, key=None)

정렬된 순서를 유지하도록 a에 x를 삽입할 위치를 찾아 넣어준다. 즉, bisect_left() 메소드에 insert() 기능이 추가된 것이다.

import bisect
a = [1, 3, 4, 5]
bisect.insort_right(a, 2)
print(a)

Output: [1, 2, 3, 4, 5]

profile
٩( ᐛ )و 

0개의 댓글