Python : Set(집합)

m_ngyeong·2024년 10월 9일
0

Python

목록 보기
6/17
post-thumbnail

🐍 Python


Set(집합)

파이썬의 집합(set)고유한 값들의 모음을 나타내는 자료형이다. 수학에서의 집합 개념과 비슷하게, 중복을 허용하지 않으며 요소의 순서가 없다. 따라서 리스트와 달리 인덱싱이 불가능하다.
집합은 중복된 데이터를 제거하거나 교집합, 합집합, 차집합 등의 집합 연산을 수행할 때 유용하다.

  • 형태: 중괄호({})
  • 중복을 허용하지 않음(unique한 값을 가짐): 같은 값이 여러 번 들어올 수 없으므로, 집합에 같은 값이 여러 번 들어가도 하나로 처리
  • 순서(order)의 개념이 없음: 집합은 순서가 없기 때문에 인덱스를 통해 접근할 수 없음
  • 변경 가능(mutable): 집합은 요소를 추가하거나 제거할 수 있음
  • 집합 연산 지원: 합집합, 교집합, 차집합 등의 수학적 집합 연산이 가능

집합 생성

집합은 중괄호 {}를 사용해 생성할 수 있으며 값을 쉼표(,)로 구분해 넣는다.

# 집합 생성
my_set = {1, 2, 3, 4}
print(my_set)  # {1, 2, 3, 4}

# 중복을 허용하지 않음
my_set = {1, 2, 2, 3, 4, 4}
print(my_set)  # {1, 2, 3, 4} (중복된 요소는 제거됨)

빈 집합 생성

빈 집합을 생성할 때는 set() 함수를 사용해야 한다. {}만 사용할 경우 빈 딕셔너리로 인식된다.

empty_set = set()  # 빈 집합 생성
print(empty_set)  # set()

집합의 기본 연산

요소 추가 : add(x) / update(iterable)

  • add(x) : 집합에 하나의 요소만을 추가
my_set = {1, 2, 3}

my_set.add(4)
print(my_set)  # {1, 2, 3, 4}
  • update(iterable) : 다른 집합이나 반복 가능한(iterable) 자료형의 요소들을 현재 집합에 추가하는 데 사용되며 쉽게 말해, 여러 데이터를 한 번에 추가.
    • iterable : 리스트, 튜플, 문자열, 또는 다른 집합 등 반복 가능한 객체.
      해당 객체의 요소들이 현재 집합에 추가됨.
my_set = {1, 2, 3}

# 리스트의 요소들을 집합에 추가
my_set.update([3, 4, 5])
print(my_set)  # {1, 2, 3, 4, 5} (중복된 3은 추가되지 않음)

# 튜플의 요소들을 집합에 추가
my_set.update((6, 7))
print(my_set)  # {1, 2, 3, 4, 5, 6, 7}

# 문자열의 각 문자를 집합에 추가
my_set.update("abc")
print(my_set)  # {1, 2, 3, 4, 5, 6, 7, 'a', 'b', 'c'}

요소 제거 : remove(x) / discard(x)

  • remove(x) : 해당 요소를 제거하고, 없으면 KeyError 오류를 발생시킴.
  • discard(x) : 해당 요소를 제거하고, 해당 요소가 없어도 오류를 발생시키지 않음.
my_set = {1, 2, 3}
my_set.remove(2)
print(my_set)  # {1, 3}

my_set.discard(4)  # 요소 4가 없지만 오류가 발생하지 않음

집합의 길이 확인 : len()

집합에 포함된 요소의 개수는 len() 함수로 확인할 수 있다.

my_set = {1, 2, 3, 4}
print(len(my_set))  # 4

집합의 요소 포함 여부 확인 : in 연산자

특정 값이 집합에 있는지 확인하려면 in 연산자를 사용할 수 있다.

my_set = {1, 2, 3}
print(2 in my_set)  # True
print(4 in my_set)  # False

집합 연산

합집합 (Union, | )

두 집합의 모든 요소를 포함하는 집합을 반환합니다. | 연산자 또는 union() 메소드를 사용한다.

set1 = {1, 2, 3}
set2 = {3, 4, 5}

# 합집합
union_set = set1 | set2
print(union_set)  # {1, 2, 3, 4, 5}

# 또는
union_set = set1.union(set2)
print(union_set)  # {1, 2, 3, 4, 5}

교집합 (Intersection, &)

두 집합에서 공통된 요소만을 포함하는 집합을 반환한다. & 연산자 또는 intersection() 메소드를 사용한다.

set1 = {1, 2, 3}
set2 = {3, 4, 5}

# 교집합
intersection_set = set1 & set2
print(intersection_set)  # {3}

# 또는
intersection_set = set1.intersection(set2)
print(intersection_set)  # {3}

차집합 (Difference, -)

첫 번째 집합에는 있지만 두 번째 집합에는 없는 요소를 반환한다. - 연산자 또는 difference() 메소드를 사용한다.

set1 = {1, 2, 3}
set2 = {3, 4, 5}

# 차집합
difference_set = set1 - set2
print(difference_set)  # {1, 2}

# 또는
difference_set = set1.difference(set2)
print(difference_set)  # {1, 2}

대칭 차집합 (Symmetric Difference, ^)

두 집합 중 어느 한 집합에만 속하는 요소를 반환한다. ^ 연산자 또는 symmetric_difference() 메소드를 사용한다.

set1 = {1, 2, 3}
set2 = {3, 4, 5}

# 대칭 차집합
symmetric_diff_set = set1 ^ set2
print(symmetric_diff_set)  # {1, 2, 4, 5}

# 또는
symmetric_diff_set = set1.symmetric_difference(set2)
print(symmetric_diff_set)  # {1, 2, 4, 5}

집합의 활용

집합은 특히 중복된 데이터를 제거하거나, 집합 연산(합집합, 교집합 등)이 필요할 때 유용하다. 예를 들어, 리스트에서 중복된 값을 제거할 때 집합을 사용할 수 있다.

# 리스트에서 중복된 값 제거
my_list = [1, 2, 2, 3, 4, 4, 5]
unique_set = set(my_list)  # 중복 제거
unique_list = list(unique_set)  # 다시 리스트로 변환
print(unique_list)  # [1, 2, 3, 4, 5]

집합(Set)의 장점

  • 중복을 자동으로 제거할 수 있어, 데이터가 고유한지 확인할 때 유용.
  • 빠른 연산 속도를 제공. (집합의 요소 추가, 삭제, 포함 여부 확인 연산은 리스트에 비해 매우 빠르게 처리됨.)
  • 수학적 집합 연산(교집합, 합집합 등)을 손쉽게 처리할 수 있음.


profile
ʚȉɞ

0개의 댓글