set()
파이썬의 set(집합)은 중복을 허용하지 않는 변경 가능한 데이터 구조로, 수학에서의 집합과 유사한 개념을 제공합니다. 순서가 없고, 각 요소는 고유해야 하며, 요소 간의 빠른 검색, 추가, 삭제를 지원합니다.
set의 주요 특징
- 중복 허용 안함: 한 집합 내에서 동일한 값이 중복될 수 없습니다.
- 순서 없음: 저장된 순서가 유지되지 않으며, 요소를 인덱스로 접근할 수 없습니다.
- 변경 가능: 집합은 새로운 요소를 추가하거나 삭제할 수 있습니다.
- 빠른 연산: 해시 테이블 기반으로, 원소의 추가/제거/검색이 평균적으로 매우 빠릅니다.
set 생성하는 법
- 중괄호 {}를 사용하거나 set() 함수를 사용하여 집합을 생성합니다.
# 방법 1: 중괄호 사용
my_set = {1, 2, 3, 4, 5}
# 방법 2: set() 함수 사용
my_set = set([1, 2, 3, 4, 5])
주요 연산
my_set.add(6) # 요소 추가
my_set.remove(4) # 요소 제거
my_set.discard(10) # 요소 제거 (존재하지 않아도 오류 없음)
my_set.clear() # 모든 요소 제거
- 요소 추가 : add() 메서드를 사용해 집합에 요소를 추가할 수 있습니다.
- 요소 삭제 : remove()와 discard() 메서드를 사용해 요소를 제거합니다.
- remove()는 존재하지 않는 요소를 삭제하려 하면 오류가 발생하지만,
- discard()는 존재하지 않아도 오류가 발생하지 않습니다.
- 모든 요소 제거: clear() 메서드로 집합의 모든 요소를 제거할 수 있습니다.
집합 연산
파이썬의 set은 수학적 집합 연산을 지원합니다.
1️⃣ 1. 합집합 (| 또는 union())
set1 = {1, 2, 3}
set2 = {3, 4, 5}
result = set1 | set2
print(result)
출력 결과
{1, 2, 3, 4, 5} |
2️⃣ 2. 교집합 (& 또는 intersection())
result = set1 & set2
print(result)
출력 결과
{3} |
3️⃣ 3. 차집합 (- 또는 difference())
result = set1 - set2
print(result)
출력 결과
{1, 2} |
4️⃣ 4. 대칭차집합 (^ 또는 symmetric_difference())
- 두 집합 간에 서로 없는 요소만 포함.
result = set1 ^ set2
print(result}
출력 결과
{1, 2, 4, 5} |
요소 검사
집합 안에 특정 요소가 있는지 확인할 수 있습니다.
if 3 in set1:
print("3이 set1에 있습니다.")
중복 제거
리스트나 다른 자료형에서 중복을 제거할 때도 set을 사용할 수 있습니다.
my_list = [1, 2, 2, 3, 3, 4]
unique_items = set(my_list)
print(unique_items)
출력 결과
{1, 2, 3, 4} |
집합 특징 요약
- 중복을 허용하지 않음.
- 순서가 없는 데이터 구조.
- 수학적 집합 연산(합집합, 교집합, 차집합 등)을 제공.
- 빠른 검색과 추가/삭제가 가능.
set은 데이터의 고유성을 보장하고, 중복된 값을 처리하거나 집합 연산이 필요한 경우에 유용하게 사용됩니다.
'알고리즘' 카테고리의 다른 글
[파이썬] zip() 함수 (0) | 2024.10.25 |
---|---|
[파이썬] 딕셔너리(Dictionary), dict() (0) | 2024.10.25 |
[파이썬] replace() 메서드 (0) | 2024.10.22 |
[파이썬] 자료 구조 - deque (0) | 2024.10.21 |
[파이썬] 리스트 컴프리헨션 (1) | 2024.10.21 |