본문 바로가기
Investment Story/금융공학 - 파이썬

14. 집합(set) 알아보기

by 자꿈두(FDiD) 2020. 6. 13.
반응형

계속해서 자료형에 대해서 공부하고 있습니다. 

오늘은 집합(set) 자료형에 대해 알아보는 시간을 갖겠습니다.

 

set 자료형은 여러 값을 순서 없이 모아둔 자료형입니다. 


set 생성하기

집합은 dict 자료형과 마찬가지로

중괄호 { } 를 이용해서 만듭니다. 

 

위의 예시를 보시면 

중괄호를 이용해 a라는 집합 자료형을 생성한 걸 확인할 수 있습니다. 

특이한 점은 데이터가 중복되더라도 한 개의 데이터만 저장하고,

순서를 신경쓰지 않고 데이터를 저장하는 사실을 알 수 있습니다.

 

다만 그냥

a = { }

를 할시 빈 set 자료형이 생성되는 것이 아니라

빈 dict 자료형이 생성되니 주의하시기 바랍니다. 

빈 set 자료형을 생성하기 위해서는

set() 함수를 이용하셔야 합니다.

아래 예시로 확인하시죠.

또 하나 알아야 할 점은, 

set 내부에는 리스트나, 또 다른 set이 들어갈 수 없습니다.

정수, 실수, 복소수, 부울, 문자열, 튜플 만이 set에 저장될 수 있습니다.


set의 연산

set은 집합 자료형이라고 이야기했죠.

우리가 초등학교 시절 배운 집합과 똑같이 생각하시면 됩니다.

연산도 마찬가지로 교집합, 합집합, 차집합이 있습니다.

하나씩 확인하겠습니다. 

 

먼저 교집합입니다. 

교집합은 intersection 메소드나 & 연산자를 활용하여 연산할 수 있습니다.

예시를 보시죠

위처럼 할 수 있습니다. 

세 개도 가능합니다.

 

다음은 합집합입니다.

합집합은 union 메소드나 | 연산자를 사용해서 연산할 수 있습니다.

위의 예시는 합집합을 나타냅니다.

 

마지막으로 차집합입니다.

차집합은 difference 메소드나 - 연산자를 활용해서 연산 가능합니다.

차집합 예시는 아래와 같습니다.

이렇게 교집합, 합집합, 차집합 연산에 대해서 알아보았습니다.


set 메소드 함수

set은 위의 설명드린 연산을 제외하고도

메소드 함수들이 더 있습니다.

대표적인 메소드 함수들을 소개하겠습니다.

 

먼저 add입니다.

말 그대로 데이터를 set에 추가하는 함수입니다.

위처럼 a라는 set에 7이라는 데이터가 추가된 걸 확인할 수 있습니다.

 

다음은 remove입니다.

말 그대로 데이터를 제거하는 함수입니다.

아까 추가하였던 7이 제거된 것을 확인할 수 있습니다. 

remove를 하실 때, 없는 데이터를 remove 하면 에러가 발생합니다.

이미 제거된 7을 또 제거하려니 오류가 발생한 것을 확인할 수 있습니다.

 

그러나 discard는 데이터가 있으면 삭제하는 함수이기에

안에 데이터가 없더라도 에러가 발생하지 않습니다.

위 예시처럼, 처음 없는 7을 discard 시켰지만

에러가 발생하지 않고, 기존 a라는 set의 데이터가 변하진 않았죠.

그리고 5를 discard 시키니 a에서 5가 제거됨을 확인할 수 있습니다.

 

여러 값을 추가하고 싶다면

update 메소드나 |= 연산자를 이용할 수 있습니다.

이는 연산되는 두 집합의 합집합을 기존 set에 저장하는 건데요.

위 예시에서 a set은 |= 연산자를 이용하였고

b set은 메소드를 이용하였는데

둘 다 합집합 결과를 기존 set에 저장하는 결과를 얻었습니다.

 

그럼 교집합 update와, 차집합 update도 있겠죠

각각 intersection_update 또는 &= 연산자

difference_update 또는 -= 연산자를 이용할 수 있습니다. 

예시를 들어 확인하겠습니다.

위 예시에서 a는 연산자를 이용한 교집합 업데이트를 하였고,

b는 메소드 함수를 이용한 차집합 업데이트를 하였습니다.


이상 오늘은 set 자료형에 대해 공부하였습니다. 

감사합니다.

반응형

'Investment Story > 금융공학 - 파이썬' 카테고리의 다른 글

16. 함수 그리고 모듈  (2) 2020.06.18
15. 함수 정의하기  (0) 2020.06.15
13. 딕셔너리 알아보기  (0) 2020.06.13
12. 튜플 알아보기  (1) 2020.06.10
11. 리스트 알아보기  (0) 2020.06.09