본문 바로가기
프로그래밍/Python

파이썬(Python) 셋(Set)에 대하여 알아보기

by 부자 꽁냥이 2022. 9. 22.

파이썬(Python)에는 셋(Set)이란 객체가 있다. 셋(Set)은 수학 시간 때 배운 집합의 개념과 동일하다. 따라서 셋(Set) 안에는 유니크한 원소들만 담겨있게 된다.

 

이번 포스팅에서는 파이썬(Python)의 셋(Set) 객체에 대해서 알아보려고 한다. 


   셋(Set)에 대해서 알아보자.

1) 셋(Set) 생성하기

a. 기본

셋을 생성할때에는 중괄호({ }) 안에 원소를 콤마로 구분하여 넣어주는 식으로 생성한다.

 

a = {'a', 'b', 'c'}
a

 

파이썬(Python) 셋(Set) 생성

그렇다면 빈 셋(Empty Set)은 어떻게 생성할까? 다음과 같이 set( )을 해주어야 한다. { }은 비어있는 딕셔너리를 의미하므로 혼동하지 않도록 하자.

 

empty_set = set() ## {}과 혼동하지 말자
empty_set

 

파이썬(Python) 빈 셋(Empty Set)

b. 문자열과 배열을 받아서 생성하기

set은 문자나 배열을 받을 수 있다. 만약 문자열을 받는다면 해당 문자열에 있는 유니크한 글자를 담게 된다.

 

string = 'hi how are you?'
set(string)

 

파이썬(Python) 셋은 문자열을 받으면 해당 문자열에 모든 글자를 유니크하게 담는다.

배열을 받으면 해당 배열 속 유니크한 원소를 담게 된다.

 

iterable = ['a','a','b','c','e','e']
set(iterable)

 

파이썬(Python) 셋은 배열을 받으면 해당 배열에 유니크한 원소를 담는다.


2) 셋(Set) 연산자

a. 너 우리편이야? : in

in을 통하여 해당 원소가 집합에 포함되는지 알 수 있다.

 

our_side = {'a', 'b', 'c'}
print('a' in our_side)
print('d' in our_side)

 

파이썬(Python) in 테스트

b. 여기에도 있고 저기에도 있는 교집합: intersection, &

intersection 또는 &를 이용하여 두셋(Set)에 공통적으로 포함된 원소를 찾을 수 있다.

 

our_side = {'a', 'b', 'c'}
other_side = {'a', 'd', 'e'}
print(our_side.intersection(other_side))
print(our_side & other_side)

 

파이썬(Python) intersection, &

c. 여기나 저기에 있는 합집합 : union, |

union 또는 |를 이용하여 두 셋(Set)의 합집합을 찾을 수 있다.

 

our_side = {'a', 'b', 'c'}
other_side = {'a', 'd', 'e'}
print(our_side.union(other_side))
print(our_side | other_side)

 

d. 여기에만 있는 차집합 : difference, -

difference나 빼기 기호 '-'를 이용하여 차집합을 계산할 수 있다. 아래는 our_side에 있지만 other_side에는 없는 원소를 찾는 코드이다.

 

our_side = {'a', 'b', 'c'}
other_side = {'a', 'd', 'e'}
print(our_side.difference(other_side))
print(our_side - other_side)

 

파이썬(Python) difference, -

e. 두 곳에 발 걸치고 있는 것들은 빼자, 대칭 차집합 : symmetric_difference, ^

symmetric_difference, ^을 이용하여 대칭 차집합을 구할 수 있다.

 

our_side = {'a', 'b', 'c'}
other_side = {'a', 'd', 'e'}
print(our_side.symmetric_difference(other_side))
print(our_side ^ other_side)

 

파이썬(Python) symmetric_difference, ^

f. 너는 나한테 둘러싸여 있는가? 부분집합 : issubset, <=, <

issubset과 '<='을 이용하여 첫 번째 셋이 두 번째 셋의 부분 집합인지 확인할 수 있다. 이때 등호를 뺀 '<'은 진 부분 집합(Proper Subset)(=자기 자신을 제외한 부분 집합)인지를 확인한다.

 

a = {'a', 'b', 'c'}
b = {'a', 'b'}
print(b.issubset(a))
print(b <= a)
print(a < a)

 

파이썬(Python) issubset, <=, <

e. 너는 나를 둘러싸고 있는가? superset : issuperset, >=, >

superset은 부분 집합(subset)의 반대개념이다. issuperset과 >=를 이용하여 첫 번째 셋이 두 번째 셋의 superset이 되는지 알 수 있다. 이때 등호를 뺀 '>'은 Proper Subset(=자기 자신을 제외한 superset)인지를 확인한다.

 

a = {'a', 'b', 'c'}
b = {'a', 'b'}
print(a.issuperset(b))
print(a >= b)
print(a > a)

 

파이썬(Python) issuperset, >=, >


댓글


맨 위로