파이썬 가이드 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이 공통 요소)