set

  • 집합을 표현하기 위해서 만들어진 자료구조
  • 중복의 데이터를 허용하지 않음(집합 표현)
  1. Basic

    • list는 중복의 데이터를 허용한다.

      1
      2
      3
      li = [1, 2, 3, 3, 4, 2, 4]
      li
      >> [1, 2, 3, 3, 4, 2, 4]
    • set은 중복의 데이터를 허용하지 않는다.

      1
      2
      3
      s = set([1, 2, 3, 3, 4, 2, 4])
      s
      >> {1, 2, 3, 4}
    • 문자열을 입력하여 만들 수도 있다.

      1
      2
      3
      string_set = set('abcde')
      string_set
      >> {'a', 'b', 'c', 'd', 'e'}
    • 집합 표현

      • union() : 합집합
        • ‘OR’ 연산자도 가능
      • intersection() : 교집합
        • ‘AND’ 연산자도 가능
      • difference() : 차집합
        • ‘-‘ 연산으로도 가능
      • symmetric_difference() : 대칭 차집합
        • 교집합을 뺀 나머지
        • ‘XOR’ 연산자도 가능
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
          22
          23
          24
          25
          26
          27
          28
          29
          30
          31
          32
          33
          34
          35
          36
          s1 = set([1, 2, 3, 4])
          s2 = set([3, 4, 5, 6])

          # 합집합
          s1.union(s2)
          >> {1, 2, 3, 4, 5, 6}

          s1 | s2 # OR 연산자
          >> {1, 2, 3, 4, 5, 6}

          # 교집합
          s1.intersection(s2)
          >> {3, 4}

          s1 & s2 # AND 연산자
          >> {3, 4}

          # 차집합
          s1.difference(s2)
          >> {1, 2}

          s1 - s2
          >> {1, 2}

          s2 - s1
          >> {5, 6}

          # 대칭 차집합
          s1.symmetric_difference(s2)
          >> {1, 2, 5, 6}

          s2.symmetric_difference(s1)
          >> {1, 2, 5, 6}

          s1 ^ s2 # XOR 연산자
          >> {1, 2, 5, 6}
  2. 관련 함수들

    1
    dir(set)
    1
    2
    3
    4
    # set 예시
    s = {1, 2, 3, 4}
    s
    {1, 2, 3, 4}
    • add() : 요소 값 추가

      • 중복의 데이터를 추가하면 들어가지 않는다.
        1
        2
        3
        4
        5
        6
        7
        s.add(5)
        s
        >> {1, 2, 3, 4, 5}

        s.add(3)
        s
        >> {1, 2, 3, 4, 5}
    • update() : 요소 값 여러 개 추가

      • 중복의 데이터는 추가되지 않는다.
        1
        2
        3
        s.update([3, 4, 5, 6])
        s
        >> {1, 2, 3, 4, 5, 6}
    • remove() : 원하는 요소 값 제거

      1
      2
      3
      s.remove(6)
      s
      >> {1, 2, 3, 4, 5}
    • pop() : 임의의 요소 값을 반환한 후, 삭제

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      help(s.pop) # 임의(arbitrary)의 수 선택
      >> Help on built-in function pop:

      pop(...) method of builtins.set instance
      Remove and return an arbitrary set element.
      Raises KeyError if the set is empty.

      s.pop()
      >> 1

      s
      >> {2, 3, 4, 5}

      s = set([9, 3, 7 ,5, 4])
      for i in range(3):
      print(s.pop(), end = " ")
      >> 3 4 5
    • difference() vs difference_update()

      • difference()는 기존 리스트가 바뀌지 않음
      • difference_update()는 기존 리스트가 바뀜
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        s1 = {1, 2, 3, 4, 5}
        s2 = {3, 5}

        s1.difference(s2)
        >> {1, 2, 4}
        s1
        >> {1, 2, 3, 4, 5} # 기존 리스트가 바뀌지 않음

        s1.difference_update(s2)
        s1
        >> {1, 2, 4} # 기존 리스트가 바뀜
Share