본문 바로가기
TIL/Python | Django

2021.5.8 TIL : [Python] 기초 문법6 - 세트

by yeon_zoo 2021. 5. 8.

세트 연산자와 메서드 비교

합집합 : | 혹은 set.union()

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

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

교집합 : & 혹은 set.intersection()

>>> a & b
{3, 4}
>>> set.intersection(a, b)
{3, 4}

차집합 : - 혹은 set.difference()

>>> a-b
{1, 2}
set.difference(a, b)
{1, 2{

대칭차집합(XOR연산) : ^ 혹은 set.symmetric_difference()

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

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

|= 와 update()

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

&=와 intersection_update()

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

-= 와 difference_update()

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

^=와 symmetric_difference_update() : 다음은 세트 {1, 2, 3, 4}dhk {3, 4, 5, 6} 중에서 겹치지 않는 요소만 a에 저장한다. 

>>> a = {1, 2, 3, 4}
>>> a ^= {3, 4, 5, 6}
>>> a
{1, 2, 5, 6}
>>> 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 <= {1, 2, 3, 4}
True
>>> a.issubset({1, 2, 3, 4, 5})
True

<은 진부분집합인지를 확인하며 별도의 메서드는 없다. 즉, 부분집합이지만 동일한 세트는 아닌 경우에 참이다. 

>>> a = {1, 2, 3, 4}
>>> a < {1, 2, 3, 4, 5}
True

반대 방향일 때도 논리적으로 생각하여 연산 가능.

세트가 동일한 요소로 구성되어 있는지는 == 연산자를 이용하여 확인 가능. 단, 세트는 집합으로 순서가 없으므로, 각 요소의 존재만 같으면 참이다.

>>> a = {1, 2, 3, 4}
>>> a == {1, 2, 3, 4}
True
>>> a == {4, 2, 1, 3}
True
>>> a = {1, 2, 3, 4}
>>> a != {1, 2, 3}
True

세트가 겹치지 않는지 확인

disjoint를 통해 현재 세트가 다른 세트와 겹치지 않는지 확인한다. 겹치는 요소가 없으면 True, 겹치는 요소가 있으면 False이다.

>>> a = {1, 2, 3, 4}
>>> a.isdisjoint({5, 6, 7, 8})       # 겹치는 요소가 없음
True
>>> a.isdisjoint({3, 4, 5, 6})    # a와 3, 4가 겹침
False

 

세트 표현식 사용하기

세트는 for 반복문과 if 조건문을 사용하여 세트를 생성할 수 있다. 다음과 같이 세트 안에 식과 for 반복문을 지정하면 된다. 

  • {식 for 변수 in 반복가능한객체}
  • set(식 for 변수 in 반복가능한객체)
>>> a = {i for i in 'apple'}
>>> a
{'l', 'p', 'e', 'a'}

세트 표현식에 if 조건문 사용하기

  • {식 for 변수 in 세트 if 조건식}
  • set(식 for 변수 in 세트 if 조건식)
>>> a = {i for i in 'pineapple' if i not in 'apl'}
>>> a
{'e', 'i', 'n'}

 

출처 : [코딩도장 파이썬] dojang.io/mod/page/view.php?id=2315

댓글