Language/Python

[02-7] Python - 집합 (세트, Sets)

TechNote.kr 2016. 12. 31. 23:51
728x90

수학에 집합에 있듯이, python에도 집합이 있다. 


수학 집합의 특징과 마찬가지로 python의 집합도 중복을 허용하지 않는다는 특징이 있다. 



집합의 정의


방법 - 1

 


먼저 list에 사과 2개, 바나나 1개, 오렌지 1개, 수박 1개를 담고, 이 list를 set()로 변환하면 중복은 제거되고 사과, 바나나, 오렌지, 수박이 하나씩 담긴 집합이 생성되게 된다. 


결과에서 보면 알겠지만 순서로 정렬되어 있지는 않다. 


방법 - 2



list 를 set()을 통해 집합으로 변환하는 방법도 있지만 중괄호 { } 를 이용해서 바로 set을 만드는 방법도 있다. 하나 유의해야 할 점은 중괄호 { } 가 dictionary에서도 사용된다는 점이다. key:value를 포함하지 않고, 하나의 값들의 연속으로 표현된다면 집합(sets)임을 명심하면 된다.


또 하나 유의해야할 점은 {} 의 경우 비어있는 집합을 의미하는 것이 아니고, 비어있는 dictionary를 의미한다는 점이다. 중괄호 { } 의 경우 dictionary와 집합(sets)에서 모두 사용한다는 점에서 조심해야 한다.


방법 - 3


마지막 정의 방법은 아래와 같다.


 

리스트를 이용하는 것도 아니고, 중괄호 { } 를 이용해서 생성하는 것도 아니다. 문자열을 set()에 넣게 되면 각각의 문자를 원소로 하는 집합이 만들어 지게 된다.


특정 문자열에 어떤 문자들이 들어 있는지 (중복 제외) 확인하는데 유용하다.



집합(sets)의 연산



집합은 4개의 연산이 가능하다.


>>> a = set('abcd')
>>> b = set('cdef')
>>> a | b
set(['a', 'c', 'b', 'e', 'd', 'f'])
>>> a & b
set(['c', 'd'])
>>> a - b
set(['a', 'b'])
>>> a ^ b
set(['a', 'b', 'e', 'f'])

a | b (합집합) : 각 집합의 원소를 모두 포함하는 집합

a & b (교집합) : 각 집합에서 공통되는 원소를 가지는 집합

a - b (차집합) : a 집합의 원소에서 b 집합과 공통되는 원소를 제거한 집합

a ^ b : a 집합과 b 집합의 합집합에서 교집합을 뺀 집합



728x90