반응형
Python의 세트(Set)는 순서가 없고 중복을 허용하지 않는 데이터 구조입니다. 세트는 중괄호 {}
를 사용하여 정의되며, 리스트, 튜플과 달리 각 요소의 순서가 보장되지 않습니다. 또한, 중복된 값을 자동으로 제거합니다. 세트는 수학에서의 집합과 비슷한 연산을 제공하며, 이를 통해 다양한 데이터 처리 작업을 효율적으로 수행할 수 있습니다.
세트의 특징
- 중복 없음: 세트는 중복된 값을 허용하지 않습니다.
- 순서 없음: 세트는 순서를 유지하지 않습니다.
- 변경 가능: 세트는 변경 가능한(mutable) 자료형으로, 요소를 추가하거나 제거할 수 있습니다.
- 다양한 데이터 타입: 세트는 다양한 데이터 타입의 요소를 가질 수 있습니다. 단, 세트의 요소는 변경 불가능(immutable)해야 합니다.
세트 생성
# 빈 세트 생성
empty_set = set()
# 초기값을 가지는 세트 생성
my_set = {1, 2, 3, 4, 5}
# 중복된 값이 자동으로 제거됨
my_set_with_duplicates = {1, 2, 2, 3, 4, 4, 5}
print(my_set_with_duplicates) # 출력: {1, 2, 3, 4, 5}
세트 요소 추가 및 제거
my_set = {1, 2, 3}
# 요소 추가
my_set.add(4)
print(my_set) # 출력: {1, 2, 3, 4}
# 여러 요소 추가
my_set.update([5, 6])
print(my_set) # 출력: {1, 2, 3, 4, 5, 6}
# 요소 제거
my_set.remove(4) # 요소가 없으면 KeyError 발생
print(my_set) # 출력: {1, 2, 3, 5, 6}
my_set.discard(7) # 요소가 없어도 오류 발생하지 않음
print(my_set) # 출력: {1, 2, 3, 5, 6}
# 임의의 요소 제거 및 반환
removed_element = my_set.pop()
print(removed_element) # 출력: 1 (임의의 요소)
print(my_set) # 출력: {2, 3, 5, 6}
# 모든 요소 제거
my_set.clear()
print(my_set) # 출력: set()
세트 연산
세트는 수학적 집합 연산을 지원합니다.
set1 = {1, 2, 3}
set2 = {3, 4, 5}
# 합집합
print(set1 | set2) # 출력: {1, 2, 3, 4, 5}
print(set1.union(set2)) # 출력: {1, 2, 3, 4, 5}
# 교집합
print(set1 & set2) # 출력: {3}
print(set1.intersection(set2)) # 출력: {3}
# 차집합
print(set1 - set2) # 출력: {1, 2}
print(set1.difference(set2)) # 출력: {1, 2}
# 대칭 차집합
print(set1 ^ set2) # 출력: {1, 2, 4, 5}
print(set1.symmetric_difference(set2)) # 출력: {1, 2, 4, 5}
세트 메서드
세트는 다양한 메서드를 제공합니다.
add()
, update()
my_set = {1, 2, 3}
my_set.add(4)
my_set.update([5, 6])
print(my_set) # 출력: {1, 2, 3, 4, 5, 6}
remove()
, discard()
, pop()
, clear()
my_set = {1, 2, 3}
my_set.remove(2) # 요소가 없으면 오류 발생
my_set.discard(3) # 요소가 없어도 오류 발생하지 않음
popped_element = my_set.pop() # 임의의 요소 제거
print(popped_element)
my_set.clear() # 모든 요소 제거
print(my_set) # 출력: set()
union()
, intersection()
, difference()
, symmetric_difference()
set1 = {1, 2, 3}
set2 = {3, 4, 5}
print(set1.union(set2)) # 출력: {1, 2, 3, 4, 5}
print(set1.intersection(set2)) # 출력: {3}
print(set1.difference(set2)) # 출력: {1, 2}
print(set1.symmetric_difference(set2)) # 출력: {1, 2, 4, 5}
issubset()
, issuperset()
, isdisjoint()
set1 = {1, 2, 3}
set2 = {1, 2}
set3 = {4, 5}
print(set2.issubset(set1)) # 출력: True
print(set1.issuperset(set2)) # 출력: True
print(set1.isdisjoint(set3)) # 출력: True
세트 컴프리헨션
리스트 컴프리헨션과 비슷하게 세트 컴프리헨션을 사용할 수 있습니다.
squared_set = {x**2 for x in range(10)}
print(squared_set) # 출력: {0, 1, 4, 9, 16, 25, 36, 49, 64, 81}
세트의 사용 예시
- 중복 요소 제거: 리스트에서 중복된 요소를 제거할 때 유용합니다.
my_list = [1, 2, 2, 3, 4, 4, 5] unique_set = set(my_list) print(unique_set) # 출력: {1, 2, 3, 4, 5}
- 집합 연산: 데이터 분석에서 교집합, 합집합 등의 집합 연산을 수행할 때 유용합니다.
set1 = {1, 2, 3} set2 = {3, 4, 5} print(set1 & set2) # 출력: {3}
이와 같이 Python의 세트는 중복을 허용하지 않으며, 수학적 집합 연산을 효율적으로 수행할 수 있는 강력한 데이터 구조입니다. 이를 통해 다양한 데이터 처리 작업을 효율적으로 수행할 수 있습니다.
반응형
'언어 > Python' 카테고리의 다른 글
[ Python ] 변수를 미리 선언해서 초기화 하는 방법 (0) | 2024.06.06 |
---|---|
[ Python ] 전역변수와 지역변수 사용하기 (0) | 2024.06.06 |
[ Python ] 딕셔너리 사용하기 (0) | 2024.06.03 |
[ Python ] 리스트 (List)와 튜플 (Tuple)의 차이 (1) | 2024.06.03 |
[ Python ] Tuple(튜플) 사용하기 (0) | 2024.06.03 |