[파이썬(Python)] 집합 정리

권수현·2024년 1월 22일

집합 연산

a = {1,2,3,4}
b = {4,5,6}

union = a | b       # 합집합
intersect = a & b   # 교집합
minus = a - b       # 차집합
symmetric = a ^ b   # 대칭차집합

print(union)
print(intersect)
print(minus)
print(symmetric)

# 부분집합인지 확인
print(a <= b)
print({1,2} <= {1,2,3})


# 출력결과
{1, 2, 3, 4, 5, 6} -> 합집합
{4}				   -> 교집합
{1, 2, 3}		   -> 차집합
{1, 2, 3, 5, 6}    -> 대칭차집합
False
True

list to set

list_to_set = [1,2,3,4,4]
print(set(list_to_set))

# 출력결과
{1, 2, 3, 4}

집합에서 탐색

집합은 내부적으로 hash table을 이용해 데이터가 저장되기 때문에, 특정 원소를 찾는데 O(1)의 시간이 걸린다.
반면 리스트는 특정 원소를 찾기 위해 최악의 경우 리스트 전체를 다 뒤져봐야하기 때문에 O(n)의 복잡도를 가진다.

set = {1,2,3,4,5,6,7,8,9,10}
list = [1,2,3,4,5,6,7,8,9,10]

print(10 in set)
print(10 in list)

# 출력결과
True
True

위와 같은 작업을 수행할때 set을 이용하는게 훨씬 빠르다.

자료구조의 중요성..!

0개의 댓글