코인시던스의 기록

[#13 파이썬 기초] 세트(set)란? 세트 생성하는 법, 특징 / 파이썬에서 집합 연산은 어떻게 할까? 본문

파이썬

[#13 파이썬 기초] 세트(set)란? 세트 생성하는 법, 특징 / 파이썬에서 집합 연산은 어떻게 할까?

코인시던스 2020. 11. 13. 22:54

안녕하세요. 오늘은 파이썬의 4 가지 컬렉션 중 세트(Set) 에 대해 알아보겠습니다.

수학에서의 집합과 동일한 개념으로 중복이 안되고 순서가 없는 데이터 구조입니다.

다른 컬렉션에 비해 쓰는 경우가 많지 않습니다.

 

   1. 세트(Set) 생성, 초기화

- 세트(Set) 는 딕셔너리(dict) 의 키(key) 만 활용하는 데이터 구조로, 딕셔너리(dict) 와 마찬가지로 중괄호 {} 를 이용해 생성합니다.

※ 비어있는 세트 생성

하지만 빈 세트(Set) 를 생성할 때는 set() 함수를 이용합니다. a = {} 로 하면 비어있는 딕셔너리가 생성되기 때문이죠.

 

   2. 세트(Set) 특징

(1) 중복으로 있는 항목을 모두 제거하고 출력

- a 라는 세트에 1 이  3 번, 3 이 2 번 있는데 모두 제거되고 출력되었죠?

indexing 이 안된다는 것은 순서가 없다는 거죠. 어떻게든 출력을 하기 위해서 순서가 있는것처럼 보이지만 사실상은 순서가 없습니다. 중복을 허용하지 않고 순서없는 구조를 갖고자 할 때 set 을 할 수 있습니다.

(2) 인덱스(Index) 없음

- 세트는 indexing 을 하려고 하니 오류가 발생합니다.

 

   3. 세트(Set) 로 변환

set() 함수를 사용하여 리스트 등과 같이 다른 타입의 컬렉션에서 세트로 변환시킬 수 있습니다. 

리스트로 생성된 a 를 set 함수를 사용하여 세트로 변환. a 는 중복을 허용하는 리스트인 반면, b 는 중복이 허용되지 않는 집합.

 

   4. 세트 연산 (Set Operations)

수학에서의 집합 연산을 파이썬에서 어떻게 실행할까요? 수학 연산과 동일하게 교집합, 합집합, 차집합 등을 지원합니다.

(1) 합집합 : union()함수를 사용합니다.

(2) 교집합 : intersection() 함수를 사용합니다.

(3) 차집합 : difference() 함수를 사용합니다. 

print(a.issubset(b)) # 부분집합이냐 아니냐

a 차집합 b 는 a 에만 있고 b 에 없는 항목을 나타냅니다.

(4) 부분집합 : issubset() 함수를 사용합니다. 부분집합인지 아닌지에 대한 함수입니다.

a 가 b 의 부분집합인가 → False
a 가 b 의 부분집합인가 → True

 

집합 연산이 필요하게 되면 각각의 함수를 활용해서 원하는 결과를 얻으면 됩니다.

set 은 거의 사용할 일이 없긴하지만 dict 는 아주 많이 사용하기 때문에 dict 선언, 여러함수, key 변경하면서 연습 계속 해보세요.

 

Comments