28.3 세트 조작하기

세트 자료형은 |, &, -, ^ 연산자 대응하는 메서드를 제공합니다.

set.union(세트1, 세트2)는 두 세트의 합집합을 구합니다. | 연산자와 같습니다.

>>> a = {1, 2, 3, 4}
>>> b = {3, 4, 5, 6}
>>> set.union(a, b)
{1, 2, 3, 4, 5, 6}

set.intersection(세트1, 세트2)는 두 세트의 교집합을 구합니다. & 연산자와 같습니다.

>>> a = {1, 2, 3, 4}
>>> b = {3, 4, 5, 6}
>>> set.intersection(a, b)
{3, 4}

set.difference(세트1, 세트2)는 두 세트의 차집합을 구합니다. - 연산자와 같습니다.

>>> a = {1, 2, 3, 4}
>>> b = {3, 4, 5, 6}
>>> set.difference(a, b)
{1, 2}

set.symmetric_difference(세트1, 세트2)는 두 세트의 대칭차집합을 구합니다. ^ 연산자와 같습니다.

>>> a = {1, 2, 3, 4}
>>> b = {3, 4, 5, 6}
>>> set.symmetric_difference(a, b)
{1, 2, 5, 6}

이번에는 |=, &=, -=, ^= 연산에 대응하는 메서드입니다. update 계열 메서드는 a.update({5})와 같이 결과를 적용할 세트에서 메서드를 사용하면 됩니다.

update(다른세트)는 현재 세트에 다른 세트를 더합니다. |= 연산과 같습니다.

>>> a = {1, 2, 3, 4}
>>> a.update({5})
>>> a
{1, 2, 3, 4, 5}

intersection_update(다른세트)는 현재 세트와 다른 세트 중에서 겹치는 요소(값)만 현재 세트에 저장합니다. &= 연산과 같습니다.

>>> a = {1, 2, 3, 4}
>>> a.intersection_update({0, 1, 2, 3, 4})
>>> a
{1, 2, 3, 4}

difference_update(다른세트)는 현재 세트에서 다른 세트를 뺍니다. -= 연산과 같습니다.

>>> a = {1, 2, 3, 4}
>>> a.difference_update({3})
>>> a
{1, 2, 4}

symmetric_difference_update(다른세트)는 현재 세트와 다른 세트 중에서 겹치지 않는 요소(값)만 현재 세트에 저장합니다. ^= 연산과 같습니다.

>>> a = {1, 2, 3, 4}
>>> a.symmetric_difference_update({3, 4, 5, 6})
>>> a
{1, 2, 5, 6}

이번에는 부분집합, 상위집합을 확인하는 함수와 세트가 서로 겹치지 않는지 확인하는 메서드입니다.

issubset(다른세트)는 현재 세트가 다른 세트의 부분집합인지 확인하며 <=와 같습니다.

>>> a = {1, 2, 3, 4}
>>> a.issubset({1, 2, 3, 4, 5})
True

issuperset(다른세트)는 현재 세트가 다른 세트의 상위집합인지 확인하며 >=와 같습니다.

>>> a = {1, 2, 3, 4}
>>> a.issuperset({1, 2, 3})
True

isdisjoint(다른세트)는 현재 세트가 다른 세트와 겹치지 않는지 확인합니다. 겹치는 요소(값)가 없으면 True, 있으면 False입니다.

>>> a = {1, 2, 3, 4}
>>> a.isdisjoint({5, 6, 7, 8})
True
>>> a.isdisjoint({4, 5, 6, 7, 8})
False

진부분집합과 진상위집합인지 확인하는 메서드는 제공하지 않으므로 <>를 사용해야 합니다.

이번에는 세트의 요소(값) 개수를 구하는 방법과 세트를 조작하는 메서드입니다.

len(세트)은 세트의 요소(값) 개수 또는 세트의 길이를 구합니다.

>>> a = {1, 2, 3, 4}
>>> len(a)
4

add(요소)는 세트에 요소(값)를 추가합니다.

>>> a = {1, 2, 3, 4}
>>> a.add(5)
>>> a
{1, 2, 3, 4, 5}

remove(요소)는 세트에서 특정 요소(값)를 삭제하고 요소가 없으면 에러를 발생시킵니다.

>>> a = {1, 2, 3, 4}
>>> a.remove(3)
>>> a
{1, 2, 4}

discard(요소)는 세트에서 특정 요소(값)를 삭제하고 요소가 없으면 그냥 넘어갑니다. 다음은 세트 a에 3이 있으므로 3을 삭제하고, 5는 없으므로 그냥 넘어갑니다.

>>> a = {1, 2, 3, 4}
>>> a.discard(3)
>>> a
{1, 2, 4}
>>> a.discard(5)
>>> a
{1, 2, 4}

pop()은 세트에서 임의의 요소(값)를 삭제하고 해당 요소를 반환합니다. 만약 요소가 없으면 에러를 발생시킵니다.

>>> a = {1, 2, 3, 4}
>>> a.pop()
1
>>> a
{2, 3, 4}

clear()는 세트에서 모든 요소(값)를 삭제합니다.

>>> a = {1, 2, 3, 4}
>>> a.clear()
>>> a
set()