Data/Python

[Python] 파이썬 집합 자료형 - 교집합, 합집합, 차집합, 함수들

재은초 2023. 6. 17. 20:47
반응형

집합(Set) 자료형이란?

  • 수학에서의 집합과 동일한 개념으로 중복되는 원소가 없이 순서에 상관없는 데이터들의 묶음이다.
  • 중복을 허용하지 않는 set의 특징은 자료형의 중복을 제거하기 위한 필터 역할로 종종 사용되기도 한다.
  • List나 Tuple은 순서가 있기 때문에 인덱싱을 통해 자료형의 값을 얻을 수 있지만, Set과 Dictionary은 순서가 없기 때문에 인덱싱으로 값을 얻을 수 없다.

집합 자료형 만들기

>>> set()                         # 빈 집합 자료형
>>> set([1,2,3])                  # 숫자로 이루어진 집합 자료형
{1, 2, 3}

>>> set("Hello")                  # 문자로 이뤄진 집합 자료형
{'e', 'H', 'l', 'o'}              # 중복을 허용하지 않으므로 l이 하나만 나옴

>>> set([100,70,88,25])           # 집합 순서 없으므로 원래와 순서 불일치할수도
{88, 25, 100, 70}

집합 요소에 접근

>>> l1 = list(set([1,2,3]))       # 집합 자료형을 리스트로 변화
>>> l1[0]
1
>>> t1 = tuple(set([1,2,3]))      # 또는 튜플로 변화
>>> t1[0]
1

집합 중복된 요소 제거

>>> a = [1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5]
>>> aSet = set(a)                 # a 리스트를 집합자료형 set으로 변환
>>> b = list(aSet)                # 집합자료형을 리스트 자료형으로 다시 변환
>>> print(b) 
[1, 2, 3, 4, 5]

 

집합 연산하기

  • 교집합 (&, intersection 함수)
>>> s1 = set([1, 2, 3, 4, 5, 6])
>>> s2 = set([4, 5, 6, 7, 8, 9])

>>> s1 & s2                     # &를 활용한 교집합 구하기
{4, 5, 6}
>>> s1.intersection(s2)         # intersection 함수를 활용한 교집합 구하기
{4, 5, 6}
  • 합집합 (|, union 함수)
>>> s1 | s2                     # "|" 기호를 이용한 방법
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> s1.union(s2)                # union 함수를 이용
{1, 2, 3, 4, 5, 6, 7, 8, 9}
  • 차집합(-, difference 함수)
>>> s1 - s2                     # 빼기(-) 기호를 이용한 방법
{1, 2, 3}
>>> s2 - s1
{8, 9, 7}
>>> s1.difference(s2)           # difference 함수를 이용한 방법
{1, 2, 3}
>>> s2.difference(s1)
{8, 9, 7}

 

집합 자료형 관련 함수들

  • 값 1개 추가하기(add)
>>> s1 = set([1, 2, 3])
>>> s1.add(4)                      # 1개의 값만 추가(add)할 경우
>>> s1
{1, 2, 3, 4}
  • 값 여러 개 추가하기(update)
>>> s1 = set([1, 2, 3])
>>> s1.update([4, 5, 6])           # 여러 개의 값을 한꺼번에 추가(update)할 때
>>> s1
{1, 2, 3, 4, 5, 6}
  • 특정 값 제거하기(remove)
>>> s1 = set([1, 2, 3])            # 특정 값을 제거하고 싶을 때
>>> s1.remove(2)
>>> s1
{1, 3}

 

Reference

반응형