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 = [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을 이용하는게 훨씬 빠르다.
자료구조의 중요성..!