Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 issubset() 함수 완벽 정리: 부분집합 판별 방법과 예제

파이썬 issubset() 함수란 무엇인가?

파이썬 표준 라이브러리에는 두 집합(set) 사이의 포함 관계를 간단하게 확인할 수 있는 issubset() 메서드가 마련되어 있습니다. 이 글에서는 issubset() 함수의 기본 개념부터 문법, 다양한 실전 예제까지 차근차근 살펴보겠습니다.

issubset() 메서드는 호출한 집합의 모든 요소가 인자로 전달된 다른 집합 안에 모두 존재하면 True를, 하나라도 포함되지 않으면 False를 반환합니다. 즉, 어떤 집합이 다른 집합의 부분집합(subset)인지를 불리언 값으로 알려주는 함수입니다.

예를 들어 아래 그림에서 B는 A의 부분집합입니다. 만약 A와 B가 완전히 동일한 집합이라면 두 집합은 같은 요소들을 공유하므로 서로에게 부분집합이 됩니다.
파이썬 issubset() 함수 완벽 정리: 부분집합 판별 방법과 예제

문법(Syntax)

<set 1>.issubset(<set 2>)
  • set 1 : 기준이 되는 집합으로, 반드시 set 타입이어야 합니다.
  • set 2 : 포함 여부를 검사할 집합 또는 이터러블(iterable) 객체입니다.

반환값(Return Value)

불리언(Boolean) 타입의 True / False

기본 사용 예제

간단한 예제를 통해 issubset() 함수의 동작 방식을 확인해 보겠습니다.

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의 모든 요소가 A에 포함되어 있으므로 True가 반환됩니다. 반면 두 번째 출력에서는 B의 요소 일부가 C에 존재하지 않기 때문에 False가 출력됩니다.

세 번째 구문에서는 str() 함수로 집합을 문자열로 변환한 뒤 연결하고, 다시 set()으로 형변환하여 C가 A의 부분집합이 되도록 의도적으로 만든 것입니다. 그 결과 True가 출력됩니다.

다른 이터러블을 인자로 전달하기

그렇다면 set이 아닌 리스트(list), 튜플(tuple), 문자열(string) 같은 다른 이터러블을 인자로 넘기면 어떻게 될까요? 다음 예제를 통해 확인해 보겠습니다.

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 타입이어야 합니다. 인터프리터가 '두 집합 간의 비교'임을 올바르게 인식하려면 호출 주체가 반드시 집합이어야 하기 때문입니다.

참고: issubset()과 비교 연산자 <=

issubset() 메서드는 비교 연산자 <=와 동일한 역할을 합니다. 예를 들어 B.issubset(A)B <= A와 같은 결과를 반환하므로, 상황에 따라 더 짧고 직관적인 코드를 작성할 수 있습니다.

마무리

이번 글에서는 파이썬 issubset() 함수의 기본 문법과 반환값, 그리고 set뿐 아니라 리스트·튜플 등 다양한 이터러블을 인자로 활용하는 방법까지 살펴보았습니다. 집합 간 포함 관계를 확인해야 할 때 issubset() 함수를 적극적으로 활용해 보시기 바랍니다.