안녕하세요. 이번 포스팅은 파이썬 Set에 대한 내용을 주제로 정리해 보려고 합니다. Set은 파이썬의 중요한 자료형 중 하나로, 집합과 관련된 작업을 수행할 때 유용하게 활용됩니다. Set 자료형의 기초부터 활용 사례까지 다양한 내용을 다뤄보겠습니다.
1. Set이란?
파이썬에서 Set(집합)은 고유한 값을 저장하는 자료형 중 하나입니다.
- 고유한 요소
Set은 중복된 값을 허용하지 않습니다. 즉, Set 내에 동일한 요소는 하나만 저장됩니다. - 순서가 없음
Set은 요소들의 순서를 유지하지 않습니다. 따라서 Set에 저장된 요소들은 순서 없이 저장되며, 인덱스로 접근할 수 없습니다. - 가변성
Set은 가변적인 자료형이며, 요소를 추가, 제거, 수정할 수 있습니다.
파이썬에서 Set은 중괄호 {}나 set() 생성자를 사용하여 생성하며, 요소들은 콤마로 구분하여 나열합니다.
예시 코드
my_set = {1, 2, 3, 4, 5}
Set은 집합 연산(합집합, 교집합, 차집합 등)을 쉽게 수행할 수 있고, 중복된 데이터를 제거하거나 멤버십 테스트(특정 값이 Set에 속하는지 확인)에 유용합니다. Set은 데이터를 고유하게 관리하고 중복을 허용하지 않는 상황에서 유용하게 사용됩니다.
2. Set 요소의 추가, 삭제, 수정
1. Set 요소의 추가
- add() 메서드
add() 메서드를 사용하여 하나의 요소를 추가할 수 있습니다.
my_set = {1, 2, 3}
my_set.add(4)
print(my_set) # 출력: {1, 2, 3, 4}
- update() 메서드
update() 메서드를 사용하여 여러 요소를 한 번에 추가할 수 있습니다. 이 메서드는 반복 가능한(iterable) 객체(리스트, 튜플 등)를 인수로 받습니다.
my_set = {1, 2, 3}
my_set.update([3, 4, 5])
print(my_set) # 출력: {1, 2, 3, 4, 5}
2. Set 요소의 삭제
- remove() 메서드
remove() 메서드를 사용하여 특정 요소를 삭제합니다. 만약 해당 요소가 Set에 없을 경우 KeyError 예외가 발생합니다.
my_set = {1, 2, 3}
my_set.remove(2)
print(my_set) # 출력: {1, 3}
- discard() 메서드
discard() 메서드를 사용하여 특정 요소를 삭제합니다. 만약 해당 요소가 Set에 없어도 예외가 발생하지 않습니다.
my_set = {1, 2, 3}
my_set.discard(4) # 요소가 없어도 예외가 발생하지 않음
print(my_set) # 출력: {1, 2, 3}
3. Set 요소의 수정
파이썬 Set은 요소의 수정을 지원하지 않습니다. Set은 수정이 불가능하며, 요소를 추가하거나 삭제하는 용도로 사용됩니다.
Set에서 요소를 추가, 삭제하고 수정하지는 못하지만, 중복된 요소를 허용하지 않고 고유한 값을 관리하는 데 유용합니다. 추가와 삭제 연산을 통해 Set을 효율적으로 활용할 수 있습니다.
3. Set의 연산
1. 합집합 (Union)
두 개의 Set을 합치는 연산으로, 중복된 요소는 한 번만 유지됩니다.
set1 = {1, 2, 3}
set2 = {3, 4, 5}
union_set = set1.union(set2)
# 또는
union_set = set1 | set2
print(union_set) # 출력: {1, 2, 3, 4, 5}
2. 교집합 (Intersection)
두 개의 Set에서 공통된 요소만을 추출하는 연산입니다.
set1 = {1, 2, 3}
set2 = {3, 4, 5}
intersection_set = set1.intersection(set2)
# 또는
intersection_set = set1 & set2
print(intersection_set) # 출력: {3}
3. 차집합 (Difference)
하나의 Set에서 다른 Set과 중복되지 않는 요소들을 추출하는 연산입니다.
set1 = {1, 2, 3}
set2 = {3, 4, 5}
difference_set = set1.difference(set2)
# 또는
difference_set = set1 - set2
print(difference_set) # 출력: {1, 2}
4. 대칭 차집합 (Symmetric Difference)
두 Set 중 하나에만 존재하는 요소들을 추출하는 연산입니다.
set1 = {1, 2, 3}
set2 = {3, 4, 5}
symmetric_difference_set = set1.symmetric_difference(set2)
# 또는
symmetric_difference_set = set1 ^ set2
print(symmetric_difference_set) # 출력: {1, 2, 4, 5}
5. 부분집합 확인
한 Set이 다른 Set의 부분집합인지 확인할 수 있습니다.
set1 = {1, 2, 3}
set2 = {1, 2}
is_subset = set2.issubset(set1)
print(is_subset) # 출력: True
6. 상위집합 확인
한 Set이 다른 Set의 상위집합(자신을 포함하는 집합)인지 확인할 수 있습니다.
set1 = {1, 2, 3}
set2 = {1, 2}
is_superset = set1.issuperset(set2)
print(is_superset) # 출력: True
이러한 Set 연산을 활용하면 데이터 처리와 분석에서 중복 제거, 집합 연산, 데이터 필터링 등 다양한 작업을 쉽게 수행할 수 있습니다.
4. Set의 활용 예제
1. 중복 제거
Set은 중복된 값을 허용하지 않으므로 중복 제거에 유용하게 사용됩니다.
data = [1, 2, 2, 3, 4, 4, 5]
unique_numbers = set(data)
print(list(unique_numbers)) # 출력: [1, 2, 3, 4, 5]
2. 멤버십 테스트
Set은 특정 값이 집합에 포함되는지 효과적으로 확인할 수 있습니다.
fruits = {"apple", "banana", "cherry"}
print("apple" in fruits) # 출력: True
print("orange" in fruits) # 출력: False
3. 교집합 계산
두 집합에서 공통된 요소를 찾을 수 있습니다.
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
intersection_set = set1.intersection(set2)
print(intersection_set) # 출력: {4, 5}
4. 데이터 필터링
Set을 사용하여 특정 조건을 만족하는 데이터만 추출할 수 있습니다.
scores = {75, 82, 90, 64, 95, 88}
passed_scores = {score for score in scores if score >= 80}
print(passed_scores) # 출력: {82, 88, 90, 95}
5. 두 리스트의 고유한 값 추출
두 개의 리스트에서 고유한 값들을 추출할 때 Set을 활용합니다.
list1 = [1, 2, 3, 4, 5]
list2 = [3, 4, 5, 6, 7]
unique_values = set(list1) | set(list2)
print(list(unique_values)) # 출력: [1, 2, 3, 4, 5, 6, 7]
6. 문자열 중 중복 문자 찾기
Set을 사용하여 문자열에서 중복된 문자를 찾을 수 있습니다.
text = "programming"
duplicate_chars = set()
for char in text:
if text.count(char) > 1:
duplicate_chars.add(char)
print(duplicate_chars) # 출력: {'g', 'r', 'm'}
Set은 중복 데이터를 처리하고 고유한 값을 추출하는 등 다양한 상황에서 유용하게 활용할 수 있는 자료형입니다.
최종 정리
오늘은 파이썬 Set에 대한 다양한 활용 예제를 살펴보았습니다. Set은 중복을 허용하지 않고 집합 연산을 쉽게 수행할 수 있는 유용한 자료형입니다. 중복 제거, 멤버십 테스트, 데이터 필터링, 교집합 계산 등 다양한 작업에 활용될 수 있으며, 데이터 처리와 분석에서 유용하게 사용됩니다. 파이썬의 Set을 활용하여 코드를 간결하고 효율적으로 작성할 수 있습니다.
감사합니다.
'Python' 카테고리의 다른 글
파이썬 NumPy를 활용한 효율적인 파일 입출력하기 (1) | 2023.10.07 |
---|---|
파이썬 numpy를 이용한 다차원 배열의 활용 (1) | 2023.10.06 |
파이썬 문자열 검색의 기초 find 함수 알아보기 (0) | 2023.10.04 |
파이썬 조건문과 반복문에서 활용하는 in 연산자 (0) | 2023.10.03 |
파이썬 Pandas와 데이터베이스의 효율적인 데이터 관리 방법 (0) | 2023.10.01 |