집합 자료형
1. 집합이란?
집합은 중복되지 않는 요소들의 모임입니다.
파이썬의 집합 자료형은 수학의 집합 개념을 바탕으로 하며, 요소들의 순서가 없습니다.
2. 집합은 어떻게 만들까?
집합은 중괄호 `{}`를 사용하거나 `set()` 함수를 사용하여 생성할 수 있습니다.
예제 1
# 중괄호를 사용하여 집합 생성
fruits = {"apple", "banana", "cherry"}
print(fruits) # {"apple", "banana", "cherry"}
예제 2
# set() 함수를 사용하여 집합 생성
numbers = set([1, 2, 3, 4, 5])
print(numbers) # {1, 2, 3, 4, 5}
3. 집합의 특징
- 중복을 허용하지 않음: 집합 내의 모든 요소는 유일합니다.
- 순서가 없음: 집합은 순서가 없기 때문에 인덱싱을 사용할 수 없습니다.(?)
예제
fruits = {"apple", "banana", "cherry", "apple"}
print(fruits) # {"apple", "banana", "cherry"} (중복된 "apple"은 하나만 남음)
4. 집합에 요소 추가하기
`add()` 메서드를 사용하여 집합에 새로운 요소를 추가할 수 있습니다.
예제 1
fruits = {"apple", "banana"}
fruits.add("cherry")
print(fruits) # {"apple", "banana", "cherry"}
예제 2
numbers = {1, 2, 3}
numbers.add(4)
print(numbers) # {1, 2, 3, 4}
5. 집합에서 요소 제거하기
`remove()` 메서드를 사용하여 집합에서 특정 요소를 제거할 수 있습니다. 요소가 없으면 `KeyError`가 발생합니다. `discard()` 메서드는 요소가 없어도 에러를 발생시키지 않습니다.
예제 1
fruits = {"apple", "banana", "cherry"}
fruits.remove("banana")
print(fruits) # {"apple", "cherry"}
예제 2
numbers = {1, 2, 3, 4}
numbers.discard(5) # 요소가 없어도 에러가 발생하지 않음
print(numbers) # {1, 2, 3, 4}
6. 집합 연산
합집합
두 집합의 모든 요소를 포함하는 새로운 집합을 만듭니다. `|` 연산자 또는 `union()` 메서드를 사용합니다.
예제 1
set1 = {1, 2, 3}
set2 = {3, 4, 5}
result = set1 | set2
print(result) # {1, 2, 3, 4, 5}
예제 2
set1 = {"apple", "banana"}
set2 = {"banana", "cherry"}
result = set1.union(set2)
print(result) # {"apple", "banana", "cherry"}
교집합
두 집합에 모두 존재하는 요소들로 구성된 새로운 집합을 만듭니다. `&` 연산자 또는 `intersection()` 메서드를 사용합니다.
예제 1
set1 = {1, 2, 3}
set2 = {2, 3, 4}
result = set1 & set2
print(result) # {2, 3}
예제 2
set1 = {"apple", "banana"}
set2 = {"banana", "cherry"}
result = set1.intersection(set2)
print(result) # {"banana"}
차집합
첫 번째 집합에는 존재하지만 두 번째 집합에는 존재하지 않는 요소들로 구성된 새로운 집합을 만듭니다. `-` 연산자 또는 `difference()` 메서드를 사용합니다.
예제 1
set1 = {1, 2, 3}
set2 = {2, 3, 4}
result = set1 - set2
print(result) # {1}
예제 2
set1 = {"apple", "banana"}
set2 = {"banana", "cherry"}
result = set1.difference(set2)
print(result) # {"apple"}
7. 집합 관련 함수
`len()`: 집합의 길이(요소의 개수)를 반환합니다.
fruits = {"apple", "banana", "cherry"}
print(len(fruits)) # 3
`clear()`: 집합의 모든 요소를 제거합니다.
fruits = {"apple", "banana", "cherry"}
fruits.clear()
print(fruits) # set()
`copy()`: 집합의 얕은 복사본을 반환합니다.
fruits = {"apple", "banana", "cherry"}
fruits_copy = fruits.copy()
print(fruits_copy) # {"apple", "banana", "cherry"}
`issubset()`: 집합이 다른 집합의 부분 집합인지 확인합니다.
set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5}
print(set1.issubset(set2)) # True
`issuperset()`: 집합이 다른 집합을 포함하는지 확인합니다.
set1 = {1, 2, 3, 4, 5}
set2 = {2, 3}
print(set1.issuperset(set2)) # True
`symmetric_difference()`: 두 집합 간에 겹치지 않는 요소들로 구성된 새로운 집합을 반환합니다.
set1 = {1, 2, 3}
set2 = {3, 4, 5}
result = set1.symmetric_difference(set2)
print(result) # {1, 2, 4, 5}
'파이썬로드' 카테고리의 다른 글
파이썬 독학, 딕셔너리 자료형 (0) | 2024.07.01 |
---|---|
파이썬 리스트 자료형, 튜플 자료형, 튜플은 어떻게 만들까? (0) | 2024.07.01 |
파이썬 리스트 자료형, 리스트 관련 함수 append, sort, reverse, index, insert, remove, pop, count, extend (0) | 2024.06.23 |
파이썬 리스트 자료형, 리스트의 수정과 삭제 (0) | 2024.06.23 |
파이썬 리스트 자료형, 리스트 연산하기 (0) | 2024.06.23 |