파이썬 집합 (Sets)

파이썬 집합(Sets) ? 파이썬 자료형 6편

파이썬 집합의 특성

중고등학교 수학시간에 집합에 대한 내용을 배우셨을 겁니다.?과거의 기억을 떠올리며 수학에서의 말하는 집합의 몇 가지 특성을 살펴보겠습니다.

  1. 데이터의 중복이 없다.
    중복집합에서는 허용하지만 기본적인 집합에서는 데이터 중복이 없습니다. 집합 {1,2,3,4} 는 가능하지만 {1,2,3,4,4,4}는 불가합니다.
  2. 순서가 없다.
    집합 {1,2,3,4} 는 {2,1,4,3} 으로 표현해도, {4,3,2,1} 로 표현해도 됩니다. 중요한 것은 집합을 이루는 원소지요.

파이썬은 이 집합 데이터형을 2.3버전부터 지원하기 시작했습니다. 데이터의 중복을 허용하지 않는 것은 딕셔너리의 특성과 같고 딕셔너리처럼 순서가 없지만 딕셔너리의 ‘키-값(Key-Value)’ 관계를 따르지 않기 때문에 딕셔너리와는 상이한 자료형입니다. 리스트, 튜플 등의 시퀀스 자료형에 속하지 않기 때문에 인덱싱 연산도 불가합니다. 집합이 순서가 없기 때문에 당연한 이치입니다.

19899
이것도 사실 집합입니다.

 

파이썬 집합의 생성

집합은 아래와 같이 생성할 수 있습니다. set() 안에는 리스트, 문자열, 튜플, 딕셔너리 등이 올 수 있습니다.

>>> S = set("Luke")
>>> S
set(['e', 'k', 'u', 'L'])

집합은 중복 원소를 허용하지 않기 때문에 중복된 값이 입력되면 그 값 중 하나 만을 취합니다.

>>> S = set(['c', 'o', 'o', 'l'])
>>> S
set(['c', 'l', 'o'])

또한 순서가 없기 때문에 입력한 순서대로 값을 가지고 있지 않습니다.

파이썬 집합의 연산

파이썬을 사용하면 차집합, 합집합 등의 집합 연산을 매우 쉽게 수행할 수 있습니다.

파이썬 차집합

집합A와 B 중 집합 A에만 속한 원소를 구할때 사용합니다. 벤다이어그램으로는 아래와 같이 표현하죠.

차집합

파이썬에서 두 집합 A,B 간의 차집합을 구하려면 – 연산을 사용하거나 difference() 함수를 사용합니다.

>>> A = set([1,2,3,4,5])
>>> B = set([3,4,5,6,7,8])
>>> A-B
set([1,2])
>>> A.difference(B)
set([1,2])

파이썬 교집합

집합A와 B 중 집합 A,B 모두에 속한 원소를 구할때 사용합니다. 벤다이어그램으로는 아래와 같이 표현하죠.

교집합

파이썬에서 두 집합 A,B 간의 교집합을 구하려면 &연산을 사용하거나 intersection() 함수를 사용합니다.

>>> A = set([1,2,3,4,5])
>>> B = set([3,4,5,6,7,8])
>>> A&B
set([3,4,5])
>>> A.intersection(B)
set([3,4,5])

파이썬 합집합

집합A와 B 중 집합 A 혹은 집합 B 혹은 집합 A,B에 모두 속한 원소를 구할때 사용합니다. 벤다이어그램으로는 아래와 같이 표현하죠.

합집합

 

파이썬에서 두 집합 A,B 간의 합집합을 구하려면 |?연산을 사용하거나 union() 함수를 사용합니다.

>>> A = set([1,2,3,4,5])
>>> B = set([3,4,5,6,7,8])
>>> A-B
set([1,2])
>>> A.difference(B)
set([1,2])

참고자료

  1. 파이썬 공식문서
  2. 위키피디아

Leave a Reply

Leave a Reply

Your email address will not be published. Required fields are marked *