Python 자료형 Set

임승환·2024년 12월 4일

Python

목록 보기
18/20

FrozenSet을 이용할 일이 있었다.
사실 set을 쓰고 안건드리면 되지만 자바의 static final이 python에는 없을까?
하고 찾다가 알게되어서 한번 써보면서, 세트에 관해서도 정리했다.

Set

  • 집합을 표현한다.
  • 합집합, 교집합, 차집합 등의 연산이 가능하다.
  • 중복 값을 허용하지 않는다.
  • 순서가 보장되지 않는다. 출력시, 매번 요소가 다른 순서로 나온다.
  • 순서가 없기 때문에 인덱스가 존재하지 않는다.
  • 리스트, 튜플, 딕셔너리와 달리 []로 특정 요소만 출력할 수 없다.
  • 특정 값이 있는지 확인하기 위해 in 연산자를 사용한다.

세트 만들기

  • {} (중괄호) 안에 값을 저장하며, 각 값은 쉼표로 구분해준다.
set_t1 = {}
set_t2 = set([iterable])

temp = {"a", "b", "c"}

a = set('apple')
# {'e', 'l', 'a', 'p'}
  • 세트는 {}를 사용하지만, 초기값으로 {}를 사용하면 dictionary가 되므로 주의해야 한다.
  • set 함수를 사용해서 set를 만들기 위해서는 list를 파라미터로 넘겨야 한다.

특징

  • in 연산자로 특정 값이 있는지 파악할 수 있다.
  • 다른 자료형 (list, dictionarym tuple)과 같이 세트안에 세트를 넣을 수 없다.

세트 연산

  • 합집합
    • 세트1 | 세트2
    • 세트1.union(세트2)
  • 교집합
    • 세트1 & 세트2
    • 세트1.intersection(세트2)
  • 차집합
    • 세트1 - 세트2
    • 세트1.difference(세트2)
  • 대차 집합
    • 세트1 ^ 세트2
    • 세트1.symmetric_difference(세트2)

집합 연산 후 할당 연산자 사용

집합 연순 후 할당 연산자 = 를 사용하여 결과를 변수에 할당한다.

연산식메서드
세트1= 세트2
세트1 \&= 세트2세트1.intersection_update(세트2)
세트1 -= 세트2세트1.difference_update(세트2)
세트1 \^= 세트2세트1.symmetric_difference_update(세트2)

부분집합과 상위집합 확인, 같은지 다른지 확인

연산 결과는 Boolean으로 나온다.

연산식메서드설명
현재세트 ≤ 다른세트현재세트.issubset(다른세트)현재 세트가 다른 세트의 부분 집합인지
현재세트 < 다른세트(메서드 없음)진부분집합인지 확인
현재세트 ≥ 다른세트현재세트.issuperset(다른세트)다른 세트의 상위 집합인지 확인
현재세트 > 다른세트(메서드 없음)현재 세트가 다른 세트의 진상위집합인지 확인
현재세트 == 다른세트(메서드 없음)같으면 True, 다르면 False, 순서가 없으므로 요소만 같으면 참
현재세트 != 다른세트(메서드 없음)같으면 True, 다르면 False, 순서가 없으므로 요소만 같으면 참
(연산식 없음)현재세트.isdisjoint(다른 세트)현재 세트가 다른 세트와 겹치지 않는지 확인

세트 조작하기

  • add(x) : 세트에 요소를 추가한다.
  • remove(x) : 세트에서 특정 요소를 삭제하고, 요소가 없으면 에러를 발생시킨다.
  • discard(x) : 세트에서 특정 요소를 삭제하고, 요소가 없으면 그냥 넘어간다.
  • pop() : 세트에서 임의의 요소를 삭제하고 해당 요소를 반환한다. 요소가 없다면 에러를 발생시킨다.
  • clear() : 세트에서 모든 요소를 삭제한다.
  • len(set_variable) : 세트의 길이를 구한다.
  • copy(set) : 기존의 세트를 복사해 새로운 세트를 만든다.

프로즌 세트(frozenset)

  • 세트와 유사하지만 불변한(immutable) 자료구조, 프로즌 세트의 요소를 수정할 수 없다.
  • 사용이유 : 세트 안에 세트를 넣고 싶을 때 사용한다, 단 frozenset만 넣을 수 있고, 일반 set은 넣을 수 없다.
my_set = {1, 2, 3, 4, 5}
my_frozenset = frozenset([1, 2, 3, 4, 5]) # 프로즌세트 생성

프로즌세트 사용 예

>>> frozenset({frozenset({1, 2}), frozenset({3, 4})})
frozenset({frozenset({1, 2}), frozenset({3, 4})})
profile
주니어 개발자

0개의 댓글