이 글에서는 파이썬 표준 라이브러리에서 제공하는 issubset() 함수의 개념과 실제 사용 방법을 예제와 함께 자세히 알아봅니다.
issubset() 함수란?
issubset() 메서드는 호출한 집합(set)의 모든 요소가 인자로 전달된 다른 집합에 포함되어 있는지를 검사합니다. 모든 요소가 포함되어 있으면 True를, 하나라도 빠져 있으면 False를 반환합니다.
예를 들어 집합 B의 모든 요소가 집합 A에 들어 있다면 B는 A의 부분집합(subset)입니다. 만약 A와 B가 완전히 동일한 요소를 가진 같은 집합이라면, 서로가 서로의 부분집합이 되므로 이 경우에도 issubset()은 True를 반환합니다.
문법
<set 1>.issubset(<set 2>)
반환 값
boolean True / False
그럼 실제 예제를 통해 동작 방식을 확인해 보겠습니다.
예제 1: 기본적인 사용법
A = {'t','u','t','o','r','i','a','l'}
B = {'t','u','t'}
C = {'p','o','i','n','t'}
print(B.issubset(A))
print(B.issubset(C))
A = set(str(A)+str(C))
print(C.issubset(A))출력
True False True
설명
첫 번째 문장에서는 B의 모든 요소('t', 'u')가 A에 포함되어 있으므로 True가 출력됩니다. 두 번째 문장에서는 B의 요소 중 'u'가 C에는 없기 때문에 False가 반환됩니다.
세 번째 문장에서는 str()을 이용한 타입 변환(typecasting)으로 두 집합을 문자열 형태로 합친 뒤 다시 set으로 만들었습니다. 이렇게 생성된 새로운 집합에는 C의 모든 문자가 포함되어 있으므로 C.issubset(A)의 결과는 True가 됩니다.
예제 2: 다른 반복 가능 객체(iterable) 전달하기
이번에는 집합이 아닌 리스트(list), 튜플(tuple) 같은 다른 반복 가능 객체를 인자로 전달하면 어떻게 되는지 살펴보겠습니다.
A = ['t','u','t','o','r','i','a','l']
B = {'t','u','t'}
C = ('p','o','i','n','t')
D = {'p','o','i','n','t'}
print(B.issubset(A))
print(B.issubset(C))
A = set(str(A)+str(C))
print(D.issubset(A))출력
True False True
설명
위 예제에서는 리스트, 튜플과 같은 반복 가능 객체를 issubset() 함수의 인자로 전달했습니다. 파이썬은 이러한 타입들을 내부적으로 자동으로 집합(set) 타입으로 변환하여 처리하기 때문에 원하는 결과를 얻을 수 있습니다.
다만 주의할 점이 있습니다. issubset()을 호출하는 객체는 반드시 set 타입이어야 합니다. 인터프리터가 두 집합 간의 비교임을 정확히 인식할 수 있도록 하기 위해서입니다. 반면 괄호 안에 전달하는 인자는 set뿐만 아니라 리스트, 튜플 등 어떤 iterable이든 허용됩니다.
마무리
이 글에서는 파이썬의 issubset() 함수를 사용해 한 집합이 다른 집합의 부분집합인지 확인하는 방법을 배웠습니다. 또한 set뿐 아니라 리스트, 튜플 등 다양한 반복 가능 객체를 인자로 활용할 수 있다는 점도 함께 살펴보았습니다. 집합 연산을 활용하면 데이터 간 포함 관계를 간결하고 효율적으로 처리할 수 있습니다.