
집합이란?
중복을 허용하지 않고, 순서가 없는 원소들의 모임입니다. 파이썬의 set 타입이 해당됩니다.
Set 역시 내부적으로 해시 테이블을 기반으로 동작하기 때문에 데이터 조회 속도가 매우 빠릅니다.
장점
원소의 존재 여부를 매우 빠르게 확인할 수 있습니다. (평균 시간 복잡도: O(1))
데이터를 추가하는 순간 자동으로 중복이 제거됩니다.
교집합, 합집합 등 유용한 집합 연산을 기본으로 지원합니다.
단점
언제 사용할까?
# 리스트의 중복 제거하기
my_list = [1, 2, 2, 3, 4, 4, 4, 5]
unique_set = set(my_list)
print(unique_set)
# 출력: {1, 2, 3, 4, 5}
주요 함수 및 사용법 (Python Set 기준)
add(value): 원소 추가
remove(value): 원소 삭제 (삭제할 원소가 없으면 에러 발생)
discard(value): 원소 삭제 (삭제할 원소가 없어도 에러 발생 안 함)
in: 존재 여부 확인
my_set = {1, 2, 3}
my_set.add(4) # {1, 2, 3, 4}
my_set.remove(2) # {1, 3, 4}
# 존재 여부 확인
if 3 in my_set:
print("3은 집합에 포함되어 있습니다.")
집합 연산
& 또는 intersection(): 교집합 (둘 다에 있는 원소)
| 또는 union(): 합집합 (모든 원소)
set_a = {1, 2, 3, 4}
set_b = {3, 4, 5, 6}
print(set_a & set_b) # 교집합: {3, 4}
print(set_a | set_b) # 합집합: {1, 2, 3, 4, 5, 6}
print(set_a - set_b) # 차집합: {1, 2}