bisect_left, bisect_right : 이진 탐색을 기반으로 한 함수
정렬된 리스트에서 특정 값의 위치를 찾거나, 그 값을 삽입할 위치를 알려주는 함수
from bisect import bisect_left, bisect_right #import 해준다
x = [2, 3, 5, 5, 7, 9, 9, 9]
#right에서 left의 값을 빼주면 7이라는 값은 하나가 있다는것을 알 수 있다
print(bisect_left(x, 7, 0, len(x))) #4 출력
print(bisect_right(x, 7, 0, len(x))) #5 출력
#right에서 left의 값을 빼주면 5이라는 값은 두개가 있다는것을 알 수 있다
print(bisect_left(x, 5, 0, len(x))) #2
print(bisect_right(x, 5, 0, len(x))) #4
#없는 값 질문.
print(bisect_left(x, 6, 0, len(x))) #4 / 값이 존재하지 않으면 6이 삽입해야하는 위치를 반환
dict : 키(key)와 값(value)을 쌍으로 저장하고, 키를 통해 값을 빠르게 조회할 수 있는 파이썬의 해시 기반 자료
삽입과 수정, 삭제 방법
#key : 나라명, value(값) : 수도
d = {"대한민국" : "서울", "프랑스" : "파리", "일본" : "동경경"}
#삽입
d["중국"] = "베이징"
print(d)
#수정
d["일본"] = "도쿄"
print(d)
#삭제
del d["중국"]
print(d)
출력과 리스트 변환
print(list(d.keys())) #key만 리스트에 삽입
print(list(d.values())) #value만 리스트에 삽입
print(list(d.items())) #튜플의 형태로 key, value가 리스트에 들어감
for key, value in d.items():
print(key, ":" , value)
검색 방법
#검색(존재 유무) in 키워드(연산자)
print("대한민국" in d) #키 검색
print("서울" in d.values()) #value 검색
#검색(키로 검색 -> 밸류 반환) : []
print(d["일본"]) #인덱스 대신 키를 대입
#검색(키로 검색 -> 밸류) : get메서드
print(d.get("한국")) #None 반환
print(d.get("한국", "존재하지 않는 나라입니다")) #존재하지 않는 나라입니다 반환
print(d.get("대한민국", "존재하지 않는 나라입니다")) #서울 반환
set : 값(=키)만 저장하는 해시 기반 자료형. ( dict에서 값 없이 키만 있는 버전 )
st = set() / 비어있는 set 생성
st = {20, 30, 10, 20}
#추가
st.add(40)
st.add(40)
print(st) # 20, 30, 10, 40 중복 불가
#삭제
st.remove(20)
#(빠른)검색 : 리스트에 in을 사용하면 O(n), set, dict에 사용하면 O(1)
print(20 in st)
'Python' 카테고리의 다른 글
Map ADT에서 검색을 구현하는 방법 (2) | RBT, Hashing (0) | 2025.04.17 |
---|---|
효율적인 소수 찾기: 에라토스테네스의 체 (0) | 2024.10.06 |
데이터 빈도 계산을 단순하게: 파이썬 Counter (0) | 2024.10.05 |
Deque를 활용한 파이썬 최적화: 리스트를 대체하는 이유 (0) | 2024.10.04 |
효율적인 탐색을 위한 자료구조: 리스트와 세트 비교 (0) | 2024.10.04 |