파이썬 가이드 08 세트
세트 (Set)
Python 세트(Set)는 순서가 없고, 변경 가능하며, 중복되지 않는 요소들의 컬렉션입니다. 주로 멤버십 테스트, 시퀀스에서 중복 항목 제거, 그리고 합집합, 교집합, 차집합과 같은 수학적 집합 연산을 수행하는 데 사용됩니다.
주요 특징: * 순서 없음 (Unordered): 세트의 요소들은 특정 순서를 가지지 않습니다. * 변경 가능 (Mutable): 세트가 생성된 후에도 항목을 추가하거나 제거할 수 있습니다. * 중복 불허 (No Duplicate Members): 세트는 동일한 값을 여러 번 포함할 수 없습니다. 중복된 값을 추가하려고 하면 무시됩니다. * 다양한 데이터 타입 허용: 리스트와 유사하게 다양한 타입의 요소를 포함할 수 있습니다.
세트 생성 방법:
세트는 중괄호 {} 안에 항목들을 쉼표로 구분하여 나열함으로써 생성합니다. 빈 세트를 생성할 때는 set() 함수를 사용해야 합니다 ( {}는 빈 딕셔너리를 생성합니다).
예시:
<!-- -->
# 세트 생성 (중복된 값은 자동으로 제거됨)
my_set = {1, 2, 3, 2, 1}
print(my_set) # 출력: {1, 2, 3}
<!-- -->
# 빈 세트 생성
empty_set = set()
print(empty_set) # 출력: set()
주요 세트 연산 및 메서드:
* 요소 추가:
* add(x): 세트에 단일 항목을 추가합니다. 이미 존재하는 항목이면 아무것도 하지 않습니다.
* update(iterable): 다른 이터러블의 모든 항목을 세트에 추가합니다.
* 요소 제거:
* remove(x): 지정된 항목을 세트에서 제거합니다. 항목이 없으면 KeyError를 발생시킵니다.
* discard(x): 지정된 항목을 세트에서 제거합니다. 항목이 없어도 오류를 발생시키지 않습니다.
* pop(): 세트에서 임의의 항목을 제거하고 반환합니다.
* clear(): 세트의 모든 항목을 제거합니다.
* 멤버십 테스트:
* in 키워드: 3 in my_set과 같이 특정 항목이 세트에 존재하는지 확인합니다.
* 집합 연산:
* union() 또는 |: 두 세트의 합집합을 반환합니다.
* intersection() 또는 &: 두 세트의 교집합을 반환합니다.
* difference() 또는 -: 두 세트의 차집합을 반환합니다.
* symmetric_difference() 또는 ^: 두 세트의 대칭 차집합(합집합에서 교집합을 뺀 것)을 반환합니다.
* issubset(): 한 세트가 다른 세트의 부분집합인지 확인합니다.
* issuperset(): 한 세트가 다른 세트의 상위집합인지 확인합니다.
* isdisjoint(): 두 세트가 공통 요소가 없는지 확인합니다.
예시:
set1 = {1, 2, 3}
set2 = {3, 4, 5}
print(set1.union(set2)) # 합집합: {1, 2, 3, 4, 5}
print(set1 | set2) # 합집합 (연산자)
print(set1.intersection(set2)) # 교집합: {3}
print(set1 & set2) # 교집합 (연산자)
print(set1.difference(set2)) # 차집합: {1, 2}
print(set1 - set2) # 차집합 (연산자)
print(set1.symmetric_difference(set2)) # 대칭 차집합: {1, 2, 4, 5}
print(set1 ^ set2) # 대칭 차집합 (연산자)
print(set1.issubset(set2)) # False
print(set1.issuperset(set2)) # False
print(set1.isdisjoint(set2)) # False (3이 공통 요소)