본문으로 바로가기

Python: Set

category Programming/Python 2021. 1. 2. 20:13
반응형

집합을 의미하는 SET은 이전 글에서 살펴본 리스트나 튜플과 마찬가지로, 파이썬에서 사용할 수 있는 순회 가능 객체 중 하나이다.

리스트에 대한 글에서 잠깐 언급되었던 셋은 위 그림과 같이 중괄호를 이용해서 데이터를 정의한다.

앞에서 이야기했듯이, 셋은 파이썬에서 지원하는 순회 가능 객체 중 하나이고,

정의된 셋의 수정이 가능하다.

리스트와 튜플의 경우에는 정의된 데이터를 가변할 수 있는지 없는지에 대한 큰 차이가 있지만, 지금까지의 내용만 봤을 때 리스트와 셋은 큰 차이가 없는 것처럼 보일 수도 있다.
하지만, 셋은 2가지의 큰 특징을 가지고 있는데,

위 그림에서 볼 수 있듯이, 셋은 중복허용하지 않는다.

그리고, 셋의 원소들에는 순서가 없다. 그래서, 셋으로 정의된 데이터들은 인덱싱 과정을 통해 값을 개별적으로 참조할 수 없다.
그래서, 셋의 원소를 개별적으로 접근하려면 리스트나 튜플로 변환해주어야 한다.
셋 자체가 파이썬의 다른 데이터 타입에 비해 늦게 지원되기 시작했지만, 이런 셋만의 특징 때문에 프로그래머들의 사랑을 많이 받지 못하는 데이터 타입이라고도 할 수 있다.

여기까지만 놓고 본다면, 셋 보다는 리스트가 더 사용하기 쉽고, 효율적인 데이터 타입이라고 생각될 수 있다. 그리고, 나도 그렇게 생각한다.
그렇다고, 셋이 아주 쓸모 없는 데이터 타입이라고 할 수는 없다. 왜냐면, 리스트에서 어렵지만, 셋에서는 쉽게 처리할 수 있는 연산들이 있기 때문이다.

서두에 이야기했듯이, 수학에서 집합을 SET이라고 한다. 바꿔 말하면, 파이썬에서 셋은 수학에서의 집합에 대한 연산 처리에 효율적인 데이터 타입이라는 의미이다.

위 그림은 두 개의 셋을 이용한 집합 연산의 결과를 보여주고 있다. 그림에서 볼 수 있듯이, 셋을 이용한다면, 수학에서의 집합 연산을 간단히 처리할 수 있다.

 

 

반응형

'Programming > Python' 카테고리의 다른 글

Python: Comprehension  (0) 2021.01.05
Python: Dictionary  (0) 2021.01.03
Python: Tuple  (0) 2021.01.01
Python: List  (0) 2020.12.17
Python: Break & Continue  (0) 2020.12.14