28.2 집합 연산 사용하기

이제 세트에서 집합 연산을 사용해보겠습니다. 집합 연산은 파이썬의 산술 연산자와 논리 연산자를 활용합니다.

  • 세트1 | 세트2
  • 세트1 & 세트2
  • 세트1 - 세트2
  • 세트1 ^ 세트2

a | b는 합집합(union)이며 OR 연산자 |를 사용합니다. 다음은 세트 {1, 2, 3, 4}{3, 4, 5, 6}을 모두 포함하므로 {1, 2, 3, 4, 5, 6}이 나옵니다.

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

a & b는 교집합(intersection)이며 AND 연산자 &를 사용합니다. 다음은 세트 {1, 2, 3, 4}{3, 4, 5, 6} 중에서 겹치는 부분이므로 {3, 4}가 나옵니다.

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

a - b는 차집합(difference)이며 - 연산자를 사용합니다. 다음은 {1, 2, 3, 4}에서 {3, 4, 5, 6}과 겹치는 부분을 뺐으므로 {1, 2}가 나옵니다.

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

a ^ b는 대칭차집합(symmetric difference)이며 XOR 연산자 ^를 사용합니다. 대칭차집합은 XOR 연산자의 특성을 그대로 따르는데 XOR은 서로 다르면 참입니다. 그래서 집합에서는 두 집합 중 겹치지 않는 값만 포함합니다. 다음은 세트 {1, 2, 3, 4}{3, 4, 5, 6} 중에서 같은 값 3과 4를 제외한 다른 모든 값이므로 {1, 2, 5, 6}이 나옵니다.

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

집합 연산을 벤 다이어그램으로 표현하면 다음과 같은 모양이 됩니다.

그림 28-1 집합 연산의 벤 다이어그램
그림 28 1 집합 연산의 벤 다이어그램

이번에는 세트 자료형에 집합 연산 후 할당을 사용해보겠습니다. 세트 자료형에 |, &, -, ^ 연산자와 할당 연산자 =을 함께 사용하면 집합 연산의 결과를 변수에 다시 저장(할당)합니다.

  • 세트1 |= 세트2
  • 세트1 &= 세트2
  • 세트1 -= 세트2
  • 세트1 ^= 세트2

a |= {5}는 현재 세트에 다른 세트를 더합니다. 다음은 세트 {1, 2, 3, 4}{5}를 더하므로 {1, 2, 3, 4, 5}가 나옵니다.

>>> a = {1, 2, 3, 4}
>>> a |= {5}
>>> a
{1, 2, 3, 4, 5}
최근 수정: 2017년 6월 29일, 목요일, 오후 6:01