• Skip to primary navigation
  • Skip to main content

IoTmaker

사물인터넷에 대한 모든 것 여기서 해결하셔요!

  • 홈
  • 책:마이크로파이썬을 활용한 사물인터넷
  • 책:따라 하면서 배우는 사물인터넷
  • 온라인 교육 코스
  • 새로운 소식
  • 의견보내기
  • 내 수강정보
  • 로그인
  • 회원가입

AI 프롬프트 활용 3-24: 마이크로파이썬에서 set 자료형의 메소드

마이크로파이썬 > AI 프롬프트

프롬프트

  프롬프트 영역으로 마우스를 옮기고 Copy 버튼을 누르면 클립보드에 프롬프트의 내용이 복사됩니다.
마이크로파이썬에서 set 자료형의 메소드를 나열하고 사용법을 설명해 줘.

AI가 만든 결과

MicroPython의 set 자료형은 기본적으로 Python의 set과 비슷한 기능을 제공하지만, MicroPython 버전에 따라 일부 메서드가 제한되거나 미구현일 수 있습니다. 일반적으로 다음과 같은 메서드를 사용할 수 있으며, 주요 사용법은 CPython과 유사합니다.


1. 생성 방법

# 빈 집합 생성
s = set()

# 초기 값이 있는 집합 생성
s = {1, 2, 3}

2. 주요 메서드

2.1 add(elem)

  • 기능: 집합에 요소 elem을 추가합니다.
  • 주의: 이미 존재하는 값이라면 중복 없이 그대로 유지됩니다.
  • 예시:

    s = {1, 2}
    s.add(3)
    print(s)  # {1, 2, 3}
    
    s.add(2)
    print(s)  # {1, 2, 3} (변화 없음)

2.2 update(iterable)

  • 기능: 다른 집합 혹은 리스트, 튜플 등 순회 가능한 객체(iterable)의 모든 요소를 집합에 추가합니다.
  • 예시:

    s = {1, 2}
    s.update([2, 3, 4])  # 리스트
    print(s)  # {1, 2, 3, 4}
    
    t = {4, 5, 6}
    s.update(t)          # 다른 집합
    print(s)  # {1, 2, 3, 4, 5, 6}

2.3 remove(elem)

  • 기능: 집합에서 요소 elem을 제거합니다.
  • 주의: 제거하려는 elem이 집합 내에 없으면 KeyError 예외가 발생합니다.
  • 예시:

    s = {1, 2, 3}
    s.remove(2)
    print(s)  # {1, 3}
    
    s.remove(9)  # 집합에 9가 없으므로 KeyError

2.4 discard(elem)

  • 기능: 집합에서 요소 elem을 제거합니다.
  • 주의: remove()와 달리, elem이 없으면 아무 일도 일어나지 않으며 오류가 발생하지 않습니다.
  • 예시:

    s = {1, 2, 3}
    s.discard(2)
    print(s)  # {1, 3}
    
    s.discard(9)  # 9가 없지만 에러 없이 그냥 무시
    print(s)  # {1, 3}

2.5 pop()

  • 기능: 집합에서 무작위로 하나의 요소를 꺼내서 반환하고, 그 요소를 집합에서 제거합니다.
    (CPython에서는 집합 순서가 정해져 있지 않으므로 어떤 요소가 pop될지 예측 불가능)
  • 예시:
    s = {1, 2, 3}
    val = s.pop()
    print(val)  # 예: 1 (무작위)
    print(s)    # 예: {2, 3} (남은 요소)

2.6 clear()

  • 기능: 집합의 모든 요소를 제거(빈 집합으로 만듦).
  • 예시:
    s = {1, 2, 3}
    s.clear()
    print(s)  # set() (빈 집합)

2.7 copy()

  • 기능: 집합을 얕은 복사(shallow copy)합니다.
  • 주의: MicroPython 버전에 따라copy() 메서드를 지원하지 않을 수도 있습니다.
    • 지원하지 않는 경우, 간단한 우회 방법은 new_set = s.union() 또는 new_set = set(s) 등을 사용할 수 있습니다.
  • 예시 (지원되는 경우):
    s = {1, 2, 3}
    s2 = s.copy()
    s2.add(4)
    print(s)   # {1, 2, 3}
    print(s2)  # {1, 2, 3, 4}

3. 집합 연산 메서드

아래 메서드들은 집합 간 연산(합집합, 교집합 등)을 수행합니다. 마이크로파이썬에서도 대부분 지원되지만, 일부 포트(특정 임베디드 환경)에서는 제한이 있을 수 있습니다.

3.1 union(other)

  • 기능: 현재 집합과 other 집합(혹은 iterable) 요소들의 합집합을 반환합니다. (새로운 집합 생성)
  • 예시:
    s1 = {1, 2, 3}
    s2 = {3, 4, 5}
    s3 = s1.union(s2)  # s3 = {1, 2, 3, 4, 5}
    print(s3)

3.2 intersection(other)

  • 기능: 교집합 반환(새로운 집합 생성)
  • 예시:
    s1 = {1, 2, 3}
    s2 = {2, 3, 4}
    s3 = s1.intersection(s2)  # s3 = {2, 3}
    print(s3)

3.3 difference(other)

  • 기능: 현재 집합에서 other에 존재하는 요소를 뺀 차집합을 반환(새로운 집합 생성)
  • 예시:
    s1 = {1, 2, 3}
    s2 = {2, 3, 4}
    s3 = s1.difference(s2)  # s3 = {1}
    print(s3)

3.4 symmetric_difference(other)

  • 기능: 현재 집합과 other 집합에서 서로 겹치지 않는 요소들로 구성된 집합을 반환(대칭차집합).
  • 예시:
    s1 = {1, 2, 3}
    s2 = {3, 4, 5}
    s3 = s1.symmetric_difference(s2)  # {1, 2, 4, 5}

3.5 issubset(other), issuperset(other), isdisjoint(other)

  • issubset(other): 현재 집합이 other의 부분집합인지(True/False)
  • issuperset(other): 현재 집합이 other의 상위집합(포함집합)인지(True/False)
  • isdisjoint(other): 현재 집합과 other가 겹치는 요소가 전혀 없는지(True/False)

4. 그 외 사용 예시

  • 멤버십 테스트: in 연산자를 사용해 해당 요소가 집합에 있는지 여부를 확인합니다.
    s = {1, 2, 3}
    print(1 in s)   # True
    print(5 in s)   # False
  • 크기 확인: len(s)로 집합의 요소 개수를 확인할 수 있습니다.
    s = {1, 2, 3}
    print(len(s))  # 3

5. 주의사항 및 팁

  1. 중복 자동 제거
    • set에 요소를 추가할 때, 이미 존재하는 값이면 중복 없이 유지됩니다.
  2. 순서가 없음
    • 집합은 순서가 없으므로, 인덱싱(s[0])을 사용해 직접 요소에 접근할 수 없습니다.
    • 요소를 하나씩 빼는 pop()도 어떤 값이 나올지 예측할 수 없습니다(무작위).
  3. 메소드 지원 여부
    • MicroPython 버전에 따라 일부 메서드(copy(), 고급 set 연산 메서드 등)가 제한될 수 있습니다.
    • 사용 환경(펌웨어 버전 등)에 맞춰 실제 테스트가 필요합니다.
  4. 메모리 관리
    • MicroPython은 일반 Python에 비해 메모리 제약이 심한 환경(마이크로컨트롤러)에서 동작하는 경우가 많습니다.
    • 집합에 너무 많은 요소를 담으면 메모리 부족 에러가 발생할 수 있으니 주의해야 합니다.

요약

  • MicroPython의 set 자료형은 일반 Python과 유사하게 추가(add, update), 삭제(remove, discard, pop, clear), 연산(union, intersection, 등) 메서드를 제공합니다.
  • 다만, 일부 메서드는 특정 버전에서 지원되지 않을 수 있으므로, 실제 사용 환경에서 테스트하는 것이 중요합니다.
  • 집합은 순서가 없고, 중복되지 않는 요소를 빠르게 관리할 수 있는 유용한 자료형입니다.

Copyright © 2025 ·로그인