[Python] 세트(set) 타입

2022. 6. 25. 02:02·Language/Python
728x90

세트(set)

파이썬의 세트는 우리가 수학에서 자주 접한 개념인 집합과 같은 개념으로, 하나의 포대 안에 모든 데이터를 몰아서 저장하는 것으로 쉽게 이해해 볼 수 있다. 따라서 세트 타입에서는 각 요소들의 순서를 매길 수 없으며, 중복된 값 또한 허용하지 않는다.

 

세트는 중괄호({})로 감싸서 선언하며, 세트 안의 요소(element)들은 쉼표(,)로 구분한다.

또한, 파이썬 내장 함수인 set() 함수를 사용하면 문자열과 같이 순환할 수 있는 객체(iterable object)를 세트로 변환할 수 있다.

※ 파이썬에서 순환할 수 있는 객체(iterable object)란 저장된 요소를 하나씩 차례대로 반환할 수 있는 객체를 의미하며, 대표적으로 리스트, 튜플, 문자열 등이 있다.
문법
세트명 = {요소1, 요소2, 요소3, ...}
set1 = {1, 2, 3}
set2 = set("Python")
set3 = set("Hello")

print(set1)
print(set2)
print(set3)
실행 결과
{1, 2, 3}
{'P', 'y', 'h', 'n', 'o', 't'}
{'l', 'e', 'o', 'H'}

위의 예제의 출력 결과는 실행결과 버튼을 누를 때마다 다르게 변할 것이다. 이것은 파이썬의 세트가 요소들 사이의 순서는 신경 쓰지 않기 때문이다.

 

또한, 7번 라인에서 ‘Hello' 문자열에 포함된 두 개의 'l'문자 중 하나만이 세트의 요소로 포함된 것처럼 파이썬에서 순환할 수 있는 객체를 세트로 변환할 때는 자동으로 중복된 값이 제거된다.


빈 세트(empty set)

아무런 요소도 저장하고 있지 않은 집합을 빈 세트(empty set)라고 한다.

파이썬에서는 빈 세트를 나타낼 때 리스트나 튜플처럼 단순히 중괄호({})만을 사용해서는 안된다. 만약 빈 세트를 나타내기 위해 중괄호({})만을 사용하게 되면, 파이썬 프로그램은 이를 빈 세트가 아닌 빈 딕셔너리로 잘못 인식할 것입니다.

 

따라서 파이썬에서 빈 세트는 중괄호가 아닌 set() 함수를 통해서만 선언할 수 있다.

set1 = {}
set2 = set()

print(type(set1))
print(type(set2))
실행 결과
<class 'dict'>
<class 'set'>

파이썬 내장 함수인 type() 함수는 인수로 전달받은 객체의 데이터 타입을 반환하는 함수다. 따라서 단순히 중괄호({})만을 사용하여 선언할 경우에는 딕셔너리 타입으로 선언됨을 확인할 수 있다.


세트에 요소 추가하거나 제거하기

add() 함수는 전달된 인수를 해당 세트의 요소로 추가하고, remove() 함수는 해당 세트에서 전달된 인수를 찾아 제거한다.

 

여러 개의 요소를 한 번에 추가하려면 update() 함수를 사용하면 되며, 이때 인수로는 순환할 수 있는 객체(iterable object) 타입만을 전달할 수 있다.

set1 = {1, 2, 3}

set1.add(4)
print(set1)

set1.update((5, 6)
print(set1)

set1.remove(2)
print(set1)
실행 결과
{1, 2, 3, 4}
{1, 2, 3, 4, 5, 6}
{1, 3, 4, 5, 6}

집합 연산

파이썬의 세트 타입은 수학에서 다루는 집합과 매우 비슷하게 동작한다. 따라서 파이썬에서는 합집합, 교집합, 차집합, 여집합 등 다양한 집합 연산을 세트 타입을 활용하여 매우 손쉽게 구현할 수 있다.

set1 = {1, 2, 3, 4, 5}
set2 = set((1, 3, 5, 7, 9))

print(set1)
print(set2)

print(set1 | set2) # 합집합
print(set1 & set2) # 교집합
print(set1 - set2) # 차집합
print(set1 ^ set2) # 여집합 = 합집합 - 교집합
실행 결과
{1, 2, 3, 4, 5}
{1, 3, 5, 7, 9}
{1, 2, 3, 4, 5, 7, 9}
{1, 3, 5}
{2, 4}
{2, 4, 7, 9}

위 예제의 1번과 2번 라인처럼 파이썬에서 세트 타입의 데이터는 중괄호를 사용하거나 set() 함수를 사용해서 선언할 수 있다. 이때 set() 함수의 인수로는 순환할 수 있는 객체(iterable object)만을 사용할 수 있다.

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

[Python] 함수(function)  (0) 2022.06.25
[Python] 딕셔너리(dictionary) 타입  (0) 2022.06.25
[Python] 튜플(tuple)타입  (0) 2022.06.25
[Python] 리스트 타입  (0) 2022.06.24
[Python] break와 continue  (0) 2022.06.23
'Language/Python' 카테고리의 다른 글
  • [Python] 함수(function)
  • [Python] 딕셔너리(dictionary) 타입
  • [Python] 튜플(tuple)타입
  • [Python] 리스트 타입
arajo
arajo
  • arajo
    아라 메모장
    arajo
  • 전체
    오늘
    어제
    • 분류 전체보기 (509)
      • Language (298)
        • HTML (55)
        • CSS (11)
        • JavaScript (70)
        • TypeScript (8)
        • Python (33)
        • Java (119)
        • C (0)
        • C# (2)
      • Programming (92)
        • Programming (14)
        • Web (51)
        • Apache (1)
        • MySQL (23)
        • AWS (3)
      • Framework | Library (26)
        • Framework | Library (3)
        • Vue.js (2)
        • React.js (5)
        • React Native (4)
        • Node.js (1)
        • Ajax (1)
        • Bootstrap (8)
        • Spring (1)
        • Flutter (1)
      • etc (2)
      • 휴식 (19)
        • 책 (13)
        • 일기 (5)
        • 게임 일기 (1)
      • A (71)
        • 공부 (18)
        • 기타 (6)
        • 일 (47)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Python
    HTML
    객체
    파이썬
    자바스크립트
    MySQL
    Java
    TypeScript
    web
    array
    변수
    CSS
    타입스크립트
    object
    next.js
    event
    제어문
    JavaScript
    리액트
    react
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
arajo
[Python] 세트(set) 타입
상단으로

티스토리툴바