오늘은 파이썬에서 제공하는 자료형 중 하나인 집합(Set)에 대해 알아보겠습니다. 집합은 고유한 원소들로 구성되어 있으며, 중복된 값을 허용하지 않고 순서가 없는 특징을 가지고 있습니다. 사실 딕셔너리 자료형이 이후로 포스팅을 했어야 하는데, 깜빡하고 12장이 되서야 공유를 드리게 되었습니다. 😅
활용 빈도가 높진 않지만 요긴하게 쓸 수 있는 집합 자료형에 기초부터 고급활용까지! 지금 공유 드리겠습니다.
1. 파이썬 집합 자료형 생성
파이썬에서 집합은 중괄호 {}
를 사용하여 생성하며, 각 원소는 쉼표로 구분됩니다. 집합은 순서가 없으므로 인덱스를 사용하여 원소에 접근할 수 없습니다. 이러한 특징으로 집합은 주로 원소들의 고유성을 확인하거나 연산을 수행할 때 활용됩니다.
고등학교 때 배웠던 집합과 같은 중괄호를 사용하는데, 주의해야 할 점은 빈 집합 생성 하려고 할때 중괄호를 {} 사용하면, 딕셔너리가 생성 된다는 점입니다. 빈 집합을 생성 할 경우에는 set() 함수를 이용하시기 바랍니다.
딕셔너리에 관련된 부분은 지난 포스팅을 참고하시기 바랍니다.
같은 중괄호를 사용하지만 딕셔너리는 원소를 key:value 쌍으로 넣으시면 됩니다.
# 빈 집합 생성
empty_set = set()
# 중괄호 {}를 사용하여 생성
fruits = {"사과", "바나나", "딸기"}
# set() 함수를 사용하여 집합 생성
empty_set = set()
numbers = set([1, 2, 3, 4, 5])
2. 파이썬 집합의 활용
집합은 원소의 중복을 허용하지 않으므로, 특정 원소의 존재 여부를 확인할 때 유용합니다. in, not in을 사용하기도 하고, 두번째 예제 처럼 list를 set으로 바꾸어 중복된 항목을 지울 수 있습니다. 여기서 주의 해야 할 점은 집합 자료형은 순서가 없기 때문에 결과값 출력시 순서가 계속 바뀔 수 있다는 점입니다.
fruits = {"사과", "바나나", "딸기"}
print("딸기" in fruits) # 결과: True print("수박" in fruits) # 결과: False
fruits2 = set(["사과", "바나나", "딸기", "딸기", "바나나"])
print(fruits2) # 결과 : {"사과", "바나나, 딸기"}
3. 집합 자료형의 메소드
집합자료형에서도 사용할 수 있는 메소드가 많습니다. 위에서 잠깐 언급했던 고등학교 때의 집합을 생각하면, 그때의 모든 연산이 가능합니다. (교집합, 합집합, 차집합 등…. 다들 까먹으신건 아니죠?)
중요한 것은 순서가 없다는 것과 중복은 허용하지 않는 다는 것이니 항상 기억하시기 바랍니다. 또한 메소드를 사용했을 때의 반환값과 오류값 등을 실제 테스트 해 보시기 바랍니다.
메소드 | 설명 |
---|---|
add(element) | 집합에 원소를 추가합니다. |
remove(element) | 집합에서 원소를 제거합니다. |
discard(element) | 집합에서 원소를 제거합니다. 원소가 없어도 오류가 발생하지 않습니다. |
pop() | 집합에서 임의의 원소를 제거하고 반환합니다. |
union(other_set) | 두 개의 집합을 합친 결과를 반환합니다. |
intersection(other_set) | 두 개의 집합에서 공통된 원소들의 집합을 반환합니다. |
difference(other_set) | 첫 번째 집합에서 두 번째 집합의 원소를 제외한 집합을 반환합니다. |
symmetric_difference(other_set) | 두 개의 집합에서 서로 다른 원소들의 집합을 반환합니다. |
issubset(other_set) | 해당 집합이 다른 집합의 부분집합인지 여부를 확인합니다. |
issuperset(other_set) | 해당 집합이 다른 집합의 상위집합인지 여부를 확인합니다. |
len() | 집합에 포함된 원소의 개수를 반환합니다. |
clear() | 집합의 모든 원소를 제거하여 빈 집합으로 만듭니다. |
# 집합 생성
my_set = {1, 2, 3, 4, 5}
# 원소 추가
my_set.add(6)
# 원소 제거
my_set.remove(3)
# 원소 제거 (오류 발생하지 않음)
my_set.discard(4)
# 임의의 원소 제거 및 반환
removed_element = my_set.pop()
# 두 집합의 합집합
other_set = {4, 5, 6, 7}
combined_set = my_set.union(other_set)
# 두 집합의 교집합
common_elements = my_set.intersection(other_set)
# 두 집합의 차집합
unique_elements = my_set.difference(other_set)
# 두 집합의 대칭 차집합
different_elements = my_set.symmetric_difference(other_set)
# 부분집합 여부 확인
is_subset = my_set.issubset(other_set)
# 상위집합 여부 확인
is_superset = my_set.issuperset(other_set)
# 집합의 길이
set_length = len(my_set)
# 집합 초기화
my_set.clear()
4. 마무리
파이썬 집합 자료형은 데이터 중복을 제거하거나 고유한 원소를 관리할 때 유용하게 활용됩니다. 또한 집합 연산을 통해 여러 집합을 효율적으로 처리할 수 있으니, 잘 기억해 두시기 바랍니다.
어쩌다 보니 순서가 좀 늦어졌지만, 파이썬의 자료형은 오늘 포스팅으로 마무리 하도록 하겠습니다.
감사합니다. “끝”