이번 글에서는 파이썬 set 자료형에서 isdisjoint() 함수를 활용하는 방법을 살펴보겠습니다. 이 함수는 인자로 전달된 집합들 사이에 공통 요소가 있는지 확인하는 메서드입니다. 공통 요소가 하나라도 발견되면 False를 반환하고, 공통 요소가 없으면 True를 반환합니다.
isdisjoint() 함수는 set 입력뿐만 아니라 리스트, 튜플, 딕셔너리 같은 다른 반복 가능한(iterable) 객체도 인자로 받을 수 있습니다. 이러한 자료형은 파이썬 인터프리터에 의해 내부적으로 자동으로 set 타입으로 변환됩니다.
문법
<set 1>.isdisjoint(<set 2>)
반환 값
불리언(Boolean) 값 — True 또는 False
그럼 실제 코드 예시를 통해 구현 방법을 자세히 알아보겠습니다.
예제 1: 기본적인 집합 비교
# 샘플 집합 선언
set_1 = {'t','u','t','o','r','i','a','l'}
set_2 = {'p','o','i','n','t'}
set_3 = {'p','y'}
# 두 집합의 서로소(disjoint) 여부 확인
print("set1과 set2는 서로소인가?", set_1.isdisjoint(set_2))
print("set2와 set3은 서로소인가?", set_2.isdisjoint(set_3))
print("set1과 set3은 서로소인가?", set_1.isdisjoint(set_3))실행 결과
set1과 set2는 서로소인가? False set2와 set3은 서로소인가? False set1과 set3은 서로소인가? True
결과 설명
set_1({'t','u','o','r','i','a','l'})과 set_2({'p','o','i','n','t'})는 't', 'o', 'i'라는 공통 요소를 포함하고 있으므로 False가 출력됩니다. set_2와 set_3 역시 공통 요소 'p'를 가지고 있어 False가 반환됩니다. 반면 set_1과 set_3 사이에는 공통 요소가 전혀 없기 때문에 True가 출력됩니다.
이번에는 set 타입이 아닌 다른 반복 가능 객체를 인자로 사용하는 예시를 살펴보겠습니다.
참고: isdisjoint()를 호출하는 객체(메서드 앞에 위치하는 변수)는 반드시 set 타입이어야 합니다. 인자로 전달되는 값은 어떤 자료형이든 상관없으며, 내부적으로 자동으로 set 타입으로 변환되어 비교됩니다.
예제 2: 다양한 자료형과의 비교
# 다양한 반복 가능 객체 선언
set_1 = {'t','u','t','o','r','i','a','l'} # set
set_2 = ('p','o','i','n','t') # 튜플(tuple)
set_3 = {'p':'y'} # 딕셔너리(dict)
set_4 = ['t','u','t','o','r','i','a','l'] # 리스트(list)
# 두 집합의 서로소 여부 확인
print("set1과 set2는 서로소인가?", set_1.isdisjoint(set_2))
print("set1과 set3은 서로소인가?", set_1.isdisjoint(set_3))
print("set1과 set4는 서로소인가?", set_1.isdisjoint(set_4))실행 결과
set1과 set2는 서로소인가? False set1과 set3은 서로소인가? True set1과 set4는 서로소인가? False
튜플, 딕셔너리, 리스트 역시 set으로 변환된 후 공통 요소 검사가 수행되며, 예상대로의 결과가 정상적으로 출력됩니다. 특히 딕셔너리를 인자로 전달할 경우 키(key)만 추출되어 비교 대상이 된다는 점을 기억해두면 유용합니다.
마무리
이번 글에서는 파이썬의 isdisjoint() 함수를 사용하는 방법과, 이 함수로 비교할 수 있는 다양한 인자 타입(set, 리스트, 튜플, 딕셔너리)에 대해 알아보았습니다. 두 집합 간에 교집합이 존재하는지 빠르게 판단해야 할 때 isdisjoint() 함수를 적극적으로 활용해 보시기 바랍니다.