이 글에서는 파이썬 집합(set) 자료형에 적용할 수 있는 intersection() 함수에 대해 알아봅니다. 수학에서 '교집합(intersection)'이란 두 집합 사이에서 공통된 원소를 찾아내는 것을 의미하며, 파이썬의 intersection() 함수는 바로 이 개념을 그대로 구현한 메서드입니다.
문법(Syntax)
<집합 이름>.intersection(<집합 a1>, <집합 a2>, ...)
교집합을 구할 대상 집합을 하나 이상 인자로 전달하면 됩니다. 인자의 개수에는 제한이 없으며, 여러 개의 집합을 한 번에 전달할 수도 있습니다.
반환값
인자로 전달된 모든 집합에 공통으로 포함된 원소들만 담긴 새로운 집합을 반환합니다. 원본 집합은 변경되지 않습니다.
예제
set_1 = {'t','u','t','o','r','i','a','l'}
set_2 = {'p','o','i','n','t'}
set_3 = {'t','u','t'}
# 두 집합의 교집합
print("set1 ∩ set2 : ", set_1.intersection(set_2))
# 세 집합의 교집합
print("set1 ∩ set2 ∩ set3 :", set_1.intersection(set_2, set_3))실행 결과
set1 ∩ set2 : {'i', 'o', 't'}
set1 ∩ set2 ∩ set3 : {'t'}설명
위 예제에서 인터프리터는 내부적으로 각 집합을 순회하며 공통 원소를 탐색한 뒤, 그 결과를 새로운 집합 객체로 만들어 반환합니다.
- set_1과 set_2의 교집합: 두 집합 모두에 존재하는 'i', 'o', 't'가 결과로 출력됩니다.
- 세 집합의 교집합: set_3까지 함께 비교하면 세 집합 모두에 포함된 유일한 원소인 't'만 남게 됩니다.
참고: & 연산자를 활용한 대체 방법
intersection() 메서드 외에도 파이썬에서는 &(AND) 연산자를 사용해 교집합을 구할 수 있습니다.
print(set_1 & set_2) # {'i', 'o', 't'}다만 & 연산자는 양쪽 모두 반드시 집합(set)이어야 하며, 리스트 등 다른 자료형이 섞여 있으면 오류가 발생합니다. 반면 intersection() 메서드는 인자로 리스트, 튜플 등 반복 가능한(iterable) 객체도 받을 수 있어 상황에 따라 더 유연하게 활용됩니다.
마무리
이번 글에서는 파이썬 3.x(및 이전 버전)에서 제공하는 intersection() 함수의 기본 문법, 반환값, 실제 사용 예제와 실행 결과까지 살펴보았습니다. 두 개 이상의 집합에서 공통 원소를 추출해야 할 때 intersection() 함수를 활용하면 간결하고 직관적인 코드를 작성할 수 있습니다.