이 글에서는 Python에서 집합(Set)이 내부적으로 어떻게 작동하는지 자세히 살펴보겠습니다. 빈 집합 생성부터 시작해 요소 추가, 그리고 합집합(union)과 교집합(intersection) 연산이 서로 다른 객체와 프레임에서 어떻게 처리되는지 단계별로 확인할 수 있습니다.
1. 빈 집합 선언하기
먼저 아무 요소도 없는 빈 집합을 생성해 보겠습니다.
>>> s=set()

set() 생성자를 호출하면 메모리에 아무 요소도 담고 있지 않은 빈 집합 객체가 만들어집니다.
2. 요소가 있는 집합 선언하기
이번에는 문자열을 전달해 요소를 가진 집합을 선언해 보겠습니다.
>>> s1=set('tutorialspoint')
문자열을 set()에 전달하면 각 문자가 개별 요소로 분리되어 저장됩니다. 이때 중복된 문자는 자동으로 제거되며, 집합은 순서를 보장하지 않기 때문에 출력 결과의 문자 순서는 입력과 다를 수 있습니다.
3. 빈 집합에 요소 추가하기
앞서 만든 빈 집합에 add() 메서드로 새로운 요소를 추가해 보겠습니다.
>>> s.add('p')
add() 메서드는 집합에 요소를 하나씩 삽입합니다. 내부적으로는 해시(hash) 기반 구조를 사용해 요소를 저장하므로, 추가·삭제·탐색 연산이 매우 빠르게 수행됩니다.
4. 새로운 집합 선언하기
'python'이라는 문자열로 또 다른 집합을 선언합니다.
>>> s2=set('python')
5. 합집합(Union) 연산
이제 두 집합의 합집합을 구해 보겠습니다.
>>> s3=s1.union(s2)

union() 메서드는 두 집합에 존재하는 모든 고유한 요소를 하나로 모은 새로운 집합을 반환합니다. 원본 집합인 s1과 s2는 변경되지 않으며, 결과는 새로운 객체 s3에 저장됩니다. 참고로 s1 | s2 연산자를 사용해도 동일한 결과를 얻을 수 있습니다.
6. 교집합(Intersection) 연산
마지막으로 두 집합의 교집합을 구현해 보겠습니다.
>>> s4=s1.intersection(s2)

intersection() 메서드는 두 집합에 공통으로 존재하는 요소만 포함하는 새로운 집합을 반환합니다. 마찬가지로 원본 집합은 그대로 유지되며, s1 & s2 연산자로도 같은 결과를 얻을 수 있습니다.
결론
이 글에서는 Python 3.x 환경에서 집합(Set)의 내부 동작 방식을 알아보았습니다. 빈 집합 생성, 요소 추가, 합집합과 교집합 연산까지 실제 코드 예제와 함께 단계별로 확인했습니다. 집합은 해시 기반으로 구현되어 있어 중복 제거와 빠른 멤버십 검사에 매우 유용하며, 데이터 처리 로직을 효율적으로 작성하는 데 큰 도움이 됩니다.