본문 바로가기
Study (Data Science)/Python

Unit 26. 세트(set)

by 콜라찡 2022. 11. 28.

Set : 집합

  • 합집합, 교집합, 차집합등의 연산을 가능케 하는 집합으로 {값1,값2,값3} 이런식ㅇ로 이루어져 있음. 출력을 할 때에는 randomly하게 출력하기 때문에, index를 지정하여 출력이 불가하고, 집합안에 중복된 것은 알아서 하나만 출력.
  • 딕셔너리와 형태 주의하여 쓰기
>>> c = {}   # 이렇게 빈 중괄호를 치면, 빈 딕셔너리가 됨.
>>> type(c)
<class 'dict'>
>>> c = set() # 꼭 이렇게 set()이라고 지정해야 세트가됨.
>>> type(c)
<class 'set'>

  • set.union(세트1, 세트2) : 합집합 {1,2,3,4,5,6}
    • 논리연산자 and와 같은 원리
  • set.intersection(세트1,세트2) : 교집합 {3,4}
  • set.difference(세트1, 세트2) : 대칭차집합 {1,2,5,6}
    • 논리연산자 XOR ^와 같음
    • set.symmetric_difference(대칭차집합)의 함수와 같음
  • 현재세트.isdisjoint(다른세트) : 현재세트와 다른세트가 겹치는 요소가 없는가. (T: 없음 / F: 있음)
  • 기호들 
    • |= : a + b         = a.update(b)
    • &= : 합집합의 요소만 현재 set에 새로 저장   = set1.intersection_update(set2) 
    • -= : set1에서 set2뺀 나머지만 출력   = set1.difference_update(set2) 와 같음
    • ^= : set1과 set2에서 겹치는것만 빼고 다 합쳐서 출력  = set1.symmetric_difference(set2)
    • <= : 부등호는 부분집합 여부를 뜻함. 인지 아닌지 T/F로 알려줌. = set1.issubset(set2)
      • = 이 붙으면 self가 부분집합이 될 수 있는가 생각해야함. self는 self를 부분집합으로 가짐. 
>>> a = {1, 2, 3, 4}
>>> b = {3, 4, 5, 6}
>>> a | b
{1, 2, 3, 4, 5, 6}
>>> set.union(a, b)
{1, 2, 3, 4, 5, 6}

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

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

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

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

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

>>> a -= {3}
>>> a
{1, 2, 4}
>>> a = {1, 2, 3, 4}
>>> a.difference_update({3})
>>> a
{1, 2, 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}
-------------------------
>>> 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.issuperset({1, 2, 3, 4})
True

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

. add (요소) : 추가

.remove(요소) : 지울 값이 없으면 에러발생.

.disregard(요소)  : 지울 값이 없으면 넘어감.

.pop(요소) : 지우고 지운 값을 출력함. 없으면 에러발생

.clear(요소):  모든요소 삭제

.len(세트) : 요소 갯수(길이) 구함

.copy() : 셋트 복사

for문으로 요소 다 꺼내올 수 있음 

세트 복합식 가능 (comprehension)

>>> a = {i for i in 'apple'}
>>> a
{'l', 'p', 'e', 'a'}

>>> a = {i for i in 'pineapple' if i not in 'apl'}
>>> a
{'e', 'i', 'n'}

 

 

 

728x90

댓글