14. 집합(set) 알아보기

2020. 6. 13. 23:41Investment Story/금융공학 - 파이썬

반응형

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

오늘은 집합(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