2025. 8. 8. 15:49
반응형
파이썬의 세트(set)는 순서가 없고(unordered), 중복을 허용하지 않는(unique) 데이터 컬렉션입니다. 딕셔너리와 마찬가지로 중괄호 {}를 사용하지만, 키(key) 없이 값(value)만으로 이루어져 있습니다. 세트는 주로 중복된 요소를 제거하거나, 두 집합 간의 교집합, 합집합, 차집합 등을 계산할 때 사용됩니다.
세트 생성하기 ✍️
세트는 중괄호 {}를 사용하여 생성하며, 각 요소는 쉼표로 구분합니다. 빈 세트를 만들 때는 {}를 사용하면 빈 딕셔너리가 되므로, set() 생성자를 사용해야 합니다.
예제:
Python
# 세트 생성하기 (중복된 요소는 자동으로 제거됩니다.)
my_set = {1, 2, 3, 3, 4, 5}
print(my_set) # 출력: {1, 2, 3, 4, 5}
# 리스트를 세트로 변환하여 중복 제거
my_list = [1, 2, 2, 3, 4, 4, 5]
unique_items = set(my_list)
print(unique_items) # 출력: {1, 2, 3, 4, 5}
# 빈 세트 생성
empty_set = set()
print(type(empty_set)) # 출력: <class 'set'>
# 참고: {}는 빈 딕셔너리입니다.
empty_dict = {}
print(type(empty_dict)) # 출력: <class 'dict'>
세트의 주요 특징 ✨
- 순서가 없음(Unordered): 세트는 인덱스를 기반으로 요소를 저장하지 않기 때문에, my_set[0]과 같이 인덱스로 요소에 접근할 수 없습니다.
- 중복을 허용하지 않음(Unique): 세트는 동일한 값을 여러 번 저장하지 않습니다. 세트를 생성하거나 요소를 추가할 때, 이미 존재하는 값은 무시됩니다.
- 변경 가능(Mutable): 세트는 요소를 추가하거나 삭제할 수 있습니다. 그러나 튜플이나 문자열처럼 불변(immutable) 객체만 세트의 요소로 포함될 수 있습니다.
예제:
Python
my_set = {10, 20, 30}
# 세트에 요소 추가하기
my_set.add(40)
print(my_set) # 출력: {10, 20, 30, 40}
# 이미 있는 요소를 추가하면 무시됩니다.
my_set.add(20)
print(my_set) # 출력: {10, 20, 30, 40}
# 여러 요소를 한꺼번에 추가하기
my_set.update({50, 60})
print(my_set) # 출력: {10, 20, 30, 40, 50, 60}
# 요소 삭제하기
my_set.remove(10) # '10'을 삭제
print(my_set) # 출력: {20, 30, 40, 50, 60}
# 존재하지 않는 요소를 remove()로 삭제 시 KeyError 발생
# my_set.remove(100) # KeyError
# 존재하지 않는 요소도 오류 없이 삭제하고 싶다면 discard() 사용
my_set.discard(100)
print(my_set) # 출력: {20, 30, 40, 50, 60}
집합 연산 🤝
세트의 가장 강력한 기능 중 하나는 수학의 집합처럼 다양한 연산을 수행할 수 있다는 것입니다.
예제:
Python
set_a = {1, 2, 3, 4, 5}
set_b = {4, 5, 6, 7, 8}
# 1. 교집합 (intersection): 두 세트 모두에 존재하는 요소
intersection_set = set_a.intersection(set_b)
# 또는 연산자 & 사용
# intersection_set = set_a & set_b
print(intersection_set) # 출력: {4, 5}
# 2. 합집합 (union): 두 세트의 모든 요소
union_set = set_a.union(set_b)
# 또는 연산자 | 사용
# union_set = set_a | set_b
print(union_set) # 출력: {1, 2, 3, 4, 5, 6, 7, 8}
# 3. 차집합 (difference): 한 세트에만 존재하는 요소
difference_set_a_b = set_a.difference(set_b)
# 또는 연산자 - 사용
# difference_set_a_b = set_a - set_b
print(difference_set_a_b) # 출력: {1, 2, 3}
# 4. 대칭 차집합 (symmetric difference): 두 세트 중 한쪽에만 존재하는 요소
symmetric_difference_set = set_a.symmetric_difference(set_b)
# 또는 연산자 ^ 사용
# symmetric_difference_set = set_a ^ set_b
print(symmetric_difference_set) # 출력: {1, 2, 3, 6, 7, 8}
이처럼 세트는 중복을 처리하고, 집합 연산을 통해 데이터를 효율적으로 처리해야 할 때 매우 유용한 자료형입니다.
반응형
'파이썬(Python)' 카테고리의 다른 글
| 파이썬 문자열(String), 문자열형 연산 : '+', '*' (1) | 2025.08.09 |
|---|---|
| 파이썬에서 데이터형 : 리스트에 대해 정리 (4) | 2025.08.08 |
| 파이썬에서 데이터형 : 딕셔너리형에 대해 정리 (1) | 2025.08.08 |
| 파이썬에서 데이터형 : TUPLE형에 대해 정리 (0) | 2025.08.08 |
| 파이썬의 데이터형(정수형, 실수형, 문자열형, 부울형, 리스트형, 세트형, 튜플형, 딕셔너리형) (4) | 2025.08.08 |
콘텐츠 내 자동삽입광고
