본문으로 바로가기

[Python] 집합 자료형 (set)

category Language/Python 2019. 12. 29. 21:46

집합 자료형도 유용하게 사용될 때가 많아서

기록합니다✍️


1. 집합 자료형이란?

집합(set)은 파이썬 2.3부터 지원하기 시작한 자료형으로, 집합에 관련된 것을 쉽게 처리하기 위해 만든 자료형이다.

집합 자료형은 다음과 같이 set 키워드를 사용해 만들 수 있다.

 

비어 있는 집합 자료형은 s = set()로 만들수 있다.

s1 = set([1,2,3])
print(s1)

출력

>> {1, 2, 3}

2. 특징

  • 중복을 허용하지 않는다.
  • 순서가 없다(Unordered).

리스트나 튜플은 순서가 있기(ordered) 때문에 인덱싱을 통해 자료형의 값을 얻을 수 있지만

set 자료형은 순서가 없기(unordered) 때문에 인덱싱으로 값을 얻을 수 없다.

이는 마치 딕셔너리와 비슷하다. 딕셔너리 역시 순서가 없는 자료형이라 인덱싱을 지원하지 않는다.

만약 set 자료형에 저장된 값을 인덱싱으로 접근하려면 리스트나 튜플로 변환한 후 해야 한다.

 

중복을 허용하지 않는 set의 특징은 자료형의 중복을 제거하기 위한 필터 역할로 종종 사용하기도 한다.

 

3. 교집합, 합집합, 차집합

일단,  2개의 set 자료형을 만든 후 세가지 예시를 진행한다.

s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])

1) 교집합(&)

"&" 기호를 이용하면 교집합을 간단히 구할 수 있다. intersection함수를 사용해도 됨

print(s1 & s2)
print(s1.intersection(s2))

출력

>> {4, 5, 6}

>> {4, 5, 6}

 

2) 합집합( | )

"|"기호나 union함수를 사용하면 됨

print(s1 | s2)
print(s1.union(s2))

출력
>> {1, 2, 3, 4, 5, 6, 7, 8, 9}

>> {1, 2, 3, 4, 5, 6, 7, 8, 9}

 

3) 차집합(-)

"-"기호나 difference함수를 사용하면 됨

print(s1-s2)
print(s1.difference(s2))

출력

>> {1, 2, 3}

>> {1, 2, 3}

4. 관련 함수들

1) 값 1개 추가하기(add)

s1 = set([1,2,3])
s1.add(4)
print(s1)

출력

>> {1, 2, 3, 4}

 

2) 값 여러개 추가하기(update)

s1 = set([1,2,3])
s1.update([4,5,6])
print(s1)

출력

>> {1, 2, 3, 4, 5, 6}

 

3) 특정값 제거하기(remove)

s1 = set([1,2,3])
s1.remove(2)
print(s1)

출력

>> {1, 3}