본문 바로가기
Python/파이썬 기초

파이썬 집합 (set)

by PySun 2023. 7. 26.
반응형

 

파이썬에서 집합(Set) 자료형은 중복되지 않는 고유한 요소들의 모음을 나타내는 자료형입니다. 집합은 중괄호({})를 사용하여 생성하며, 각 요소는 쉼표로 구분합니다. 하지만, 중괄호로 빈 집합을 생성할 때는 딕셔너리와의 혼동을 피하기 위해 set() 생성자를 사용해야 합니다.

특징

  • 중복 요소를 허용하지 않습니다. 따라서, 집합에는 동일한 요소가 한 번만 포함됩니다.
  • 순서가 없습니다. 즉, 인덱스를 사용하여 요소에 접근할 수 없습니다.
  • 집합은 변경 가능한(Mutable) 자료형입니다. 따라서 요소를 추가하거나 삭제할 수 있습니다.

연산

  • 집합에는 다양한 수학적 연산이 가능합니다. 주요 연산은 다음과 같습니다
  • 교집합(&): 두 집합의 공통 요소를 구합니다
  • 합집합(|): 두 집합의 모든 요소를 합칩니다.
  • 차집합(-): 한 집합에서 다른 집합의 요소를 제거합니다.
  • 대칭차집합(^): 두 집합에서 서로 다른 요소들을 합칩니다(교집합을 제외한 요소)
# 두 개의 집합 생성
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}

# 합집합 연산 (|)
union_set = set1 | set2
print("합집합:", union_set)  # 출력: {1, 2, 3, 4, 5, 6, 7, 8}

# 교집합 연산 (&)
intersection_set = set1 & set2
print("교집합:", intersection_set)  # 출력: {4, 5}

# 차집합 연산 (-)
difference_set1 = set1 - set2
difference_set2 = set2 - set1
print("set1 - set2 (차집합):", difference_set1)  # 출력: {1, 2, 3}
print("set2 - set1 (차집합):", difference_set2)  # 출력: {8, 6, 7}

# 대칭차집합 연산 (^)
symmetric_difference_set = set1 ^ set2
print("대칭차집합:", symmetric_difference_set)  # 출력: {1, 2, 3, 6, 7, 8}

함수 및 메서드

  • add(element): 집합에 새로운 요소를 추가합니다.
  • remove(element): 집합에서 지정된 요소를 제거합니다. 요소가 없으면 KeyError가 발생합니다.
  • discard(element): 집합에서 지정된 요소를 제거합니다. 요소가 없어도 에러가 발생하지 않습니다.
  • clear(): 집합의 모든 요소를 제거하여 빈 집합으로 만듭니다.
  • copy(): 집합의 복사본을 반환합니다.
  • union(set1, set2, ...): 여러 집합들의 합집합을 반환합니다.
  • intersection(set1, set2, ...): 여러 집합들의 교집합을 반환합니다.
  • difference(set): 다른 집합과의 차집합을 반환합니다.
  • symmetric_difference(set): 다른 집합과의 대칭차집합을 반환합니다.
# 집합 생성
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}

# add(element): 집합에 새로운 요소를 추가합니다.
set1.add(5)
print("add(5):", set1)  # 출력: {1, 2, 3, 4, 5}

# remove(element): 집합에서 지정된 요소를 제거합니다. 요소가 없으면 KeyError가 발생합니다.
set1.remove(2)
print("remove(2):", set1)  # 출력: {1, 3, 4, 5}

# discard(element): 집합에서 지정된 요소를 제거합니다. 요소가 없어도 에러가 발생하지 않습니다.
set1.discard(10)  # 요소 10은 존재하지 않아도 에러 없이 진행
print("discard(10):", set1)  # 출력: {1, 3, 4, 5}

# copy(): 집합의 복사본을 반환합니다.
set_copy = set1.copy()
print("set_copy:", set_copy)  # 출력: {1, 3, 4, 5}

# union(set1, set2, ...): 여러 집합들의 합집합을 반환합니다.
union_set = set1.union(set2)
print("union_set:", union_set)  # 출력: {1, 3, 4, 5, 6}

# intersection(set1, set2, ...): 여러 집합들의 교집합을 반환합니다.
intersection_set = set1.intersection(set2)
print("intersection_set:", intersection_set)  # 출력: {3, 4}

# difference(set): 다른 집합과의 차집합을 반환합니다.
difference_set = set1.difference(set2)
print("difference_set:", difference_set)  # 출력: {1, 5}

# symmetric_difference(set): 다른 집합과의 대칭차집합을 반환합니다.
symmetric_difference_set = set1.symmetric_difference(set2)
print("symmetric_difference_set:", symmetric_difference_set)  # 출력: {1, 2, 5, 6}

# clear(): 집합의 모든 요소를 제거하여 빈 집합으로 만듭니다.
set1.clear()
print("clear():", set1)  # 출력: set()

 
위 코드에서 보여진 것처럼, 집합은 유용한 수학적 연산과 자체적인 메서드를 제공하여 데이터를 다루는데 유용합니다. 집합을 사용하면 중복된 요소를 제거하거나 여러 집합들을 쉽게 조합하여 원하는 결과를 얻을 수 있습니다.
 

반응형

'Python > 파이썬 기초' 카테고리의 다른 글

파이썬 함수 (def)  (0) 2023.07.27
파이썬 불 (bool)  (0) 2023.07.27
파이썬 딕셔너리 타입 (dictionary)  (0) 2023.07.26
파이썬 튜플 타입 (tuple)  (0) 2023.07.26
파이썬 리스트 타입(list)  (0) 2023.07.25