[Python] 자료형 - 집합
집합(Set)은 중복을 허용하지 않고, 순서가 없는 데이터 타입입니다. 집합은 수학에서의 집합과 같은 특성을 가지며, 중괄호 {}
를 사용하여 정의합니다.
1. 집합 생성하기
집합은 중괄호 {}
를 사용하여 생성하거나, set()
함수를 사용하여 생성할 수 있습니다.
# 빈 집합 생성
empty_set = set()
# 값이 있는 집합 생성
fruits = {"apple", "banana", "cherry"}
print(empty_set) # 출력: set()
print(fruits) # 출력: {'apple', 'banana', 'cherry'}
2. 집합에 값 추가하기, 집합에서 값 제거하기
값 추가하기
fruits = {"apple", "banana"}
fruits.add("cherry")
print(fruits) # 출력: {'apple', 'banana', 'cherry'}
값 제거하기
fruits = {"apple", "banana", "cherry"}
fruits.remove("banana")
print(fruits) # 출력: {'apple', 'cherry'}
# 요소가 집합에 없는 경우 KeyError 발생
# fruits.remove("grape") # KeyError 발생
# discard() 메서드는 요소가 집합에 없는 경우에도 에러가 발생하지 않음
fruits.discard("grape")
print(fruits) # 출력: {'apple', 'cherry'}
3. 집합 연산
집합은 합집합, 교집합, 차집합, 대칭차집합 등의 연산을 지원합니다.
합집합
두 집합의 모든 요소를 포함하는 새로운 집합을 반환합니다.
set1 = {"apple", "banana", "cherry"}
set2 = {"cherry", "date", "elderberry"}
union_set = set1.union(set2)
print(union_set) # 출력: {'apple', 'banana', 'cherry', 'date', 'elderberry'}
교집합
두 집합에 모두 존재하는 요소만 포함하는 새로운 집합을 반환합니다.
set1 = {"apple", "banana", "cherry"}
set2 = {"cherry", "date", "elderberry"}
intersection_set = set1.intersection(set2)
print(intersection_set) # 출력: {'cherry'}
차집합
첫 번째 집합에는 존재하지만, 두 번째 집합에는 존재하지 않는 요소만 포함하는 새로운 집합을 반환합니다.
set1 = {"apple", "banana", "cherry"}
set2 = {"cherry", "date", "elderberry"}
difference_set = set1.difference(set2)
print(difference_set) # 출력: {'apple', 'banana'}
대칭차집합
두 집합 중 한 집합에만 존재하는 요소들을 포함하는 새로운 집합을 반환합니다.
set1 = {"apple", "banana", "cherry"}
set2 = {"cherry", "date", "elderberry"}
symmetric_difference_set = set1.symmetric_difference(set2)
print(symmetric_difference_set) # 출력: {'apple', 'banana', 'date', 'elderberry'}
4. 집합 관련 함수와 메서드
집합 길이 구하기
fruits = {"apple", "banana", "cherry"}
print(len(fruits)) # 출력: 3
요소 존재 여부 확인
fruits = {"apple", "banana", "cherry"}
print("banana" in fruits) # 출력: True
print("grape" in fruits) # 출력: False
집합 복사
fruits = {"apple", "banana", "cherry"}
copy_fruits = fruits.copy()
print(copy_fruits) # 출력: {'apple', 'banana', 'cherry'}
집합 모든 요소 삭제
fruits = {"apple", "banana", "cherry"}
fruits.clear()
print(fruits) # 출력: set()
5. 집합의 특성
- 중복을 허용하지 않음: 집합 내에 같은 값이 여러 번 있을 수 없습니다.
- 순서가 없음: 집합은 순서가 없기 때문에 인덱싱으로 특정 요소에 접근할 수 없습니다.
# 중복된 값을 가지는 집합
fruits = {"apple", "banana", "cherry", "apple"}
print(fruits) # 출력: {'apple', 'banana', 'cherry'}
# 집합은 순서가 없으므로 인덱싱이 불가능
# print(fruits[0]) # TypeError 발생
Leave a comment