파이썬의 set() 은 반복 가능하고, 가변적이며, 중복 요소가 없고, 정렬되지 않은 데이터 타입이다.
>>> a = set()
>>> type(a)
<class 'set'>
>>> a = {1,2,3}
>>> type(a)
<class 'set'>
{}
로 묶였다고 해서dict()
와 헷갈리지 말자.
키와 값이 없기 때문에dict()
가 아니다.
set() 의 가장 큰 특징이다. 중복을 허용하지 않는다.
>>> a = set([0,0,0,1,2,3])
>>> a
{0, 1, 2, 3}
0
이 3개가 출력되어야 하지만 실체 출력 결과에서 0
은 하나만 출력되었다.
중복을 허용하지 않는다는 특징을 이용해서 어떨 때 사용할까? 집합 연산을 할 때 많이 사용한다.
>>> a = set([1,2,3,4])
>>> b = set([3,4,5,6])
두 개의 집합이 있다. 교집합과 합집합을 각각 구해보자.
>>> a & b
{3, 4}
a
와 b
의 공통적인 부분인 3, 4
만 출력됐다.
>>> a | b
{1, 2, 3, 4, 5, 6}
3,4
가 중복이 되어야 함에도 불구하고 중복이 되지 않는다.
>>> a - b
{1, 2}
집합 a
에서 집합 b
와 공통 부분인 3, 4
가 없어진 1, 2
만 출력됐다.
집합도 요소를 추가시킬 수 있다.
>>> a.add(5)
>>> a.add(6)
>>> a
{1, 2, 3, 4, 5, 6}
집합의 요소 삭제
>>> a.remove(3)
>>> a
{1, 2, 4, 5, 6}
집합 전체를 업데이트 하는 기능
>>> a.update([5,6,7,8,9])
>>> a
{1, 2, 4, 5, 6, 7, 8, 9}
물론 이 경우에도 중복은 허용하지 않는다.