Files
python-examples/doc/03_06_set.md
2025-01-20 02:26:20 +09:00

3.0 KiB

Set

파이썬의 set 자료형은 수학에서의 집합 개념을 그대로 가져온 자료형입니다. 즉, 중복되는 요소를 허용하지 않고 순서가 없는 자료형입니다.

  • set

    세트의 아이템은 중복될 수 없으며, 순서도 없습니다. 중괄호({, })를 사용해서 표현합니다.

특징

  • 중복 허용 X: 같은 값을 여러 번 넣어도 하나의 값만 유지됩니다.
  • 순서 없음: 요소들이 특정 순서로 저장되지 않습니다. 따라서 인덱싱을 통해 요소에 접근할 수 없습니다.
  • 변경 가능: 요소를 추가하거나 삭제할 수 있습니다.

set 자료형 생성하기

a = {'apple', 'orange', 'banana'}
b = set('apple', 'orange', 'banana')
empty_set = set()

my_set = {1, 2, 3, 2}  # 중복된 2는 하나만 포함

불변 세트를 만들려면 frozenset()를 사용합니다. Immutable 세트는 값을 수정할 수 없습니다.

c = frozenset('apple', 'orange', 'banana') 

리스트와 달리 순서가 없으므로, my_set[0]과 같이 대괄호 안에 인덱스를 사용해서 요소에 접근할 수 없습니다.

세트 안에 중첩된 세트를 넣을 수도 없습니다.

아이템의 추가 / 삭제

add() 메서드를 사용하여 요소를 추가합니다.

my_set.add(4)

remove() 메서드를 사용하여 요소를 삭제합니다. 없는 요소를 삭제하려고 하면 KeyError가 발생합니다. discard() 메서드는 요소가 없어도 에러 없이 무시합니다.

my_set.remove(2)
my_set.discard(5)  # 5가 없어도 에러 발생하지 않음

아이템 포함 여부

세트 안에 어떤 값이 있는지 확인하려면 in을 사용합니다.

a = {'apple', 'orange', 'banana'}
'orange' in a # True

집합 연산

논리 연산자 또는 set의 메서드를 사용해서 집합 연산을 할 수 있습니다.

a = {1, 2, 3}
b = {3, 4, 5, 6}

a | b # 합집합 {1,2,3,4,5,6}
set.union(a, b)
a & b # 교집합 {3}
set.intersection(a, b)
a - b # 차집합 {1,2}
set.difference(a, b)
a ^ b # 대칭 차집합
set.symmetric_difference(a, b)
  • set.union(), | : 합집합

  • set.intersection(), & : 교집합

  • set.difference(), - : 차집합

  • set.symmetric_difference()

  • update(세트), |=

  • intersection_update(세트), &=

  • difference_update(세트), -=

  • symmetric_update(세트), ^=

비교 연산자를 사용해서 포함 관계를 확인할 수 있습니다.

{1,2,3} <= {1,2,3,4,5} # 다른 집합의 부분집합인지 여부
{1,2,3}.issubset({1,2,3,4,5})

{1,2,3} < {1,2,3,4,5} # 다른 집합의 진부분집합인지 여부

{1,2,3} >= {1,2,3,4,5} # 다른 집합의 상위집합인지 여부
{1,2,3}.issuperset({1,2,3,4,5})

{1,2,3} > {1,2,3,4,5} # 다른 집합의 진상위집합인지 여부

{1,2,3} == {1,2,3,4,5} # 서로 같은지 여부
{1,2,3} != {1,2,3,4,5}

{1,2,3}.isdisjoint({1,2,3,4,5}) # 서로 겹치는 요소가 없으면 True가 반환됩니다.