본문 바로가기
Python

[Python] Sets란?

by Henry Cho 2022. 8. 8.
728x90

Sets란?


포스트 난이도: HOO_Junior

 

[Notice] 포스트 난이도에 대한 설명

안녕하세요, HOOAI의 Henry입니다. Bro들의 질문에 대한 내용을 우선적으로 포스팅이 되다 보니 각각의 포스트에 대한 난이도가 달라서 난이도에 대한 부분을 작성하면 좋겠다는 의견을 들었습니다

whoishoo.tistory.com


# Sets

 

파이썬(Python)에 있어서 데이터를 그룹으로 저장하고 관리하는 대표적인 기능은 총 4가지가 있다. 우선 파이썬을 대표하는 튜플(Tuple)이 있고 리스트(List)와 딕셔너리(Dictionary) 등이 있다. 마지막으로 세트(Set) 기능을 통해서도 데이터를 그룹 지정을 하여 저장 및 관리가 가능하다. 굳이 비슷한 기능들을 4가지로 구분하여 사용하는 이유는 각각의 기능들이 가지고 있는 특징이 조금씩 다르기 때문이다.

 

세트의 경우에는 Unchangeable, Unordered, Not duplicates라는 특징을 가지고 있다. 우선 Unchangeable이라는 것은 세트 안의 데이터 변경이 불가하다는 것을 의미한다. Set이 한번 만들어지고 나서는 안의 요소들을 바꿀 수 없다. 다만 안의 요소들을 제거하거나 추가하는 것은 가능하다.

 

두 번째로 Unordered라는 것은 set 안의 요소 및 데이터에 대한 순서가 정해져 있지 않다는 것이다. 순서가 별도로 정해져 있지 않다는 것은 세트 안의 값들이 순서와 상관없이 산출된다는 것을 의미한다. 따라서 Set을 사용하게 되면 index나 key의 역할을 수행하지 못한다.

 

마지막으로 Not duplicates라는 특징은 세트 안의 값들이 중복되지 않는다는 것이다. 중복이 되지 않는다는 것이 세트(Set)에 있어서 가장 큰 특징 중 하나인데 다른 그룹 지정하는 기능들의 경우에는 중복되어 산출되기 때문이다. 중복이 되지 않는다는 말은 세트 안의 동일한 요소가 여러 개 존재한다면 결과 산출 시 하나만 산출이 이루어진다는 걸 의미한다. 예를 들어서 2022 카카오 코딩 테스트 1번 문제에서 신고 중복 건수를 제외하고 신고 내역을 산출한다고 했을 때, defaultdict 대신하여 set 기능을 통해서 코딩이 가능하다.


# Set 예제 코드

 

Set의 가장 큰 특징 3가지인 Unchangeable, Unordered, Not duplicates에 대해서 예제코드를 통해서 살펴보면 훨씬 쉽게 이해가 가능하다.

HOOAI = {"Python", "Java", "C++", "C"}

print(HOOAI)
{'C', 'Python', 'C++', 'Java'}

 

위의 코드를 살펴보면 HOOAI라는 set를 선언했으며, HOOAI 안에는 4가지 요소가 존재한다. 이때 print을 하게 되면 Python부터 출력이 될 것처럼 보이지만 생각지도 않은 C가 먼저 출력되고 순서도 엉망인 걸 알 수 있다. 왜냐하면 set는 순서를 기억하는 기능이 포함되지 않기 때문에 순서와 상관없이 안의 요소가 출력되는 것이다. 다음 예제 코드도 살펴보도록 하자.

HOOAI = {"Python", "Java", "C++", "C", "Python", "Python"}

print(HOOAI)
{'C', 'Python', 'C++', 'Java'}

 

위의 예제 코드에서는 "Python"이 총 세개가 세트 안의 포함되어 있는 걸 알 수 있다. 하지만 print을 통해 결과를 산출하면 Python은 한 번만 출력된다. 왜냐하면 Set의 특징 중 하나인 Not duplicates로 인해 중복된 요소는 제외하고 한 번만 출력이 이루어지기 때문이다. 따라서 Set는 순서와 상관없으면서 중복 여부를 제외하고 결과를 산출하고 싶을 때 사용하는 기능이다. 또한 한번 입력되어 있는 값은 삭제가 가능하나 수정이 불가하기 때문에 이러한 특징을 필요로 할 때 사용되는 기능이다.


 

728x90

'Python' 카테고리의 다른 글

[Python] 파이썬 라이브러리(Python Libraries)  (0) 2022.09.08
[Python] 파이썬 웹기반 IDE: Jupyterlab, Colab  (0) 2022.09.03
[Python] defaultdict  (0) 2022.08.04
[Python] def 란?  (0) 2022.08.03
[Python] if 문이란? (if statement)  (0) 2022.07.31

댓글