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

Python 집합(Set)의 내부 동작 원리 완벽 이해하기

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

1. 빈 집합 선언하기

먼저 아무 요소도 없는 빈 집합을 생성해 보겠습니다.

>>> s=set()

Python 집합(Set)의 내부 동작 원리 완벽 이해하기

set() 생성자를 호출하면 메모리에 아무 요소도 담고 있지 않은 빈 집합 객체가 만들어집니다.

2. 요소가 있는 집합 선언하기

이번에는 문자열을 전달해 요소를 가진 집합을 선언해 보겠습니다.

>>> s1=set('tutorialspoint')

Python 집합(Set)의 내부 동작 원리 완벽 이해하기

문자열을 set()에 전달하면 각 문자가 개별 요소로 분리되어 저장됩니다. 이때 중복된 문자는 자동으로 제거되며, 집합은 순서를 보장하지 않기 때문에 출력 결과의 문자 순서는 입력과 다를 수 있습니다.

3. 빈 집합에 요소 추가하기

앞서 만든 빈 집합에 add() 메서드로 새로운 요소를 추가해 보겠습니다.

>>> s.add('p')

Python 집합(Set)의 내부 동작 원리 완벽 이해하기

add() 메서드는 집합에 요소를 하나씩 삽입합니다. 내부적으로는 해시(hash) 기반 구조를 사용해 요소를 저장하므로, 추가·삭제·탐색 연산이 매우 빠르게 수행됩니다.

4. 새로운 집합 선언하기

'python'이라는 문자열로 또 다른 집합을 선언합니다.

>>> s2=set('python')

Python 집합(Set)의 내부 동작 원리 완벽 이해하기

5. 합집합(Union) 연산

이제 두 집합의 합집합을 구해 보겠습니다.

>>> s3=s1.union(s2)

Python 집합(Set)의 내부 동작 원리 완벽 이해하기

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

6. 교집합(Intersection) 연산

마지막으로 두 집합의 교집합을 구현해 보겠습니다.

>>> s4=s1.intersection(s2)

Python 집합(Set)의 내부 동작 원리 완벽 이해하기

intersection() 메서드는 두 집합에 공통으로 존재하는 요소만 포함하는 새로운 집합을 반환합니다. 마찬가지로 원본 집합은 그대로 유지되며, s1 & s2 연산자로도 같은 결과를 얻을 수 있습니다.

결론

이 글에서는 Python 3.x 환경에서 집합(Set)의 내부 동작 방식을 알아보았습니다. 빈 집합 생성, 요소 추가, 합집합과 교집합 연산까지 실제 코드 예제와 함께 단계별로 확인했습니다. 집합은 해시 기반으로 구현되어 있어 중복 제거와 빠른 멤버십 검사에 매우 유용하며, 데이터 처리 로직을 효율적으로 작성하는 데 큰 도움이 됩니다.