
파이썬의 Set(집합)은 중복을 자동 제거하고, 순서가 없는(unordered) 자료형으로 수학적 집합 구조를 그대로 구현한다.
중복 제거, 빠른 탐색, 교차 분석, 권한/그룹 비교 등에서 특히 강력하다.
또한 해시 기반 구조라 membership 검사 성능이 list보다 평균적으로 훨씬 빠르기 때문에 대규모 데이터에서도 유리하다.
이 문서는 Set의 정의 → 특징 → 생성 → 메서드 → 집합 연산 → 실무 활용 → 실습 → 요약까지 기술문서 형식으로 종합 정리한다.
1. Set(집합)의 기본
파이썬의 중복 없는(unique) 데이터 집합
순서 없음(unordered) - 인덱싱 / 슬라이싱 불가
Set 자체는 mutable(요소 추가·삭제 가능), 하지만 저장되는 요소는 immutable이어야 한다.
수학의 집합 연산(합집합·교집합·차집합 등) 지원
해시 기반 구조 ⇒ 탐색 속도 매우 빠름
✔ set 은 "고유 값의 집합"을 정의할 때 사용하기 적합하며, 중복 제거와 빠른 비교가 필요한 상황에서 성능이 뛰어나다.
중복된 값을 자동으로 제거
순서를 보장하지 않아 출력 순서가 달라질 수 있다(환경·해시 상태에 따라 변동)
인덱싱이 불가 ⇒ 필요시 list 반환
요소는 반드시 immutable(int, float, str, tuple 등)
for 문으로 순회 가능


✔ 중복이 자동 제거되는 Set의 기본 동작 예시, Set은 순서를 보장하지 않기 때문에 출력 결과의 순서가 매번 달라질 수 있음
2. Set 생성 문법
중괄호 {} 안에 값을 나열하면 바로 집합 생성됨
중복된 값은 자동으로 제거됨

set() 생성자 함수 사용리스트, 튜플, 문자열 등을 set()에 전달하여 집합 생성
전달된 값들 중 중복은 자동 제거됨

빈 중괄호 {}는 딕셔너리(dict)로 인식됨
따라서 빈 집합은 반드시 set()으로 생성해야 함

✔ 주의: {}는 빈 딕셔너리이며, 빈 Set은 set()으로 생성해야 한다
set은 순서가 없는 컬렉션이라 인덱싱/슬라이싱 불가
순서가 필요하면 리스트(list)로 변환하여 사용

순서가 없어도 for문 등으로 순회는 가능함
단, 출력 순서는 매번 달라질 수 있음 (해시 기반 저장)

set의 원소는 반드시 immutable(변경 불가) 자료형이어야 함
리스트, 딕셔너리 같은 mutable 자료형은 원소가 될 수 없음

✔ set의 요소는 immutable 자료형만 가능하며, list, dict는 요소로 사용할 수 없다.
3. Set 주요 연산 및 메서드
set은 수학적 집합 개념을 그대로 사용할 수 있도록 연산자를 지원함
✔ 합집합 / 교집합 / 차집합 / 대칭 차집합의 시각적 이해를 돕는 이미지

✔ 합집합 / 교집합 / 차집합 / 대칭 차집합 에 대한 메서드 설명

✔ 메서드를 사용한 집합 연산 예시

✔ 여러 집합 메서드에 대한 설명

✔ Set의 주요 수정 메서드(add, remove, discard 등) 동작 예시

✔ 부분집합 / 상위집합 / 서로소 관계를 나타내는 집합 구조

✔ Set의 부분집합 메서드 동작 예시
4. Set 활용 - 실무에서 자주 쓰는 이유
set은 중복 제거·빠른 탐색·집합 연산 이라는 고유 특성 덕분에 실무에서 널리 쓰인다.리스트에서 중복 제거: set(list)
두 집합의 공통 요소 분석(교집합 기반 교차 분석)
조건 일치 여부 빠른 검사: x in set
로그 / 기록 데이터에서 중복 탐지
권한 그룹, 태그, 관심사 분석 등 집합 개념이 필요한 구조
특히 membership check(x in set)속도는 list보다 수십 배 빠르다.
실습. set 종합 연습
어떤 학급의 학생들이 제출한 팀 과제 파일 이름 목록이 아래와 같습니다. 중복 제출된 경우도 포함되어 있습니다.
중복을 제거한 후, 제출한 학생 수를 출력하는 프로그램을 작성하세요
submissions = ["Kim", "Lee", "Kim", "Park", "Choi", "Lee", "Lee"]

제출한 학생 수: 4명
제출자 명단: {'Kim', 'Lee', 'Choi', 'Park'}
두 명의 사용자가 각자 좋아하는 영화 장르를 아래와 같이 입력했습니다.
두 사용자의 공통 관심 장르, 서로 다른 장르, 모든 장르 목록을 출력하세요.
user1 = {"SF", "Action", "Drama"}
user2 = {"Drama", "Romance", "Action"}

공통 관심 장르: {'Drama', 'Action'}
서로 다른 장르: {'SF', 'Romance'}
전체 장르: {'Action', 'SF', 'Drama', 'Romance'}
어떤 유저가 가지고 있는 자격증 목록과 특정 직무에 필요한 자격증 목록이 주어집니다.
이 사용자가 지원 자격을 갖추었는지 확인하세요.
my_certificates = {"SQL", "PYTHON", "LINUX"}
job_required = {"SQL", "PYTHON"}

지원 자격 충족 여부: True
5.
set한눈에 정리
Set은 “중복 제거 + 빠른 탐색 + 집합 연산”에 최적화된 파이썬의 해시 기반 자료형이다.중복 자동 제거: 고유한(unique) 값만 저장
순서 없음(Unordered): 인덱싱·슬라이싱 불가
가변(Mutable): 요소 추가·삭제 가능
빠른 탐색: membership 검사(x in set) 속도가 list 대비 압도적으로 빠름
집합 연산 지원: 합집합(|), 교집합(&), 차집합(-), 대칭 차집합(^)
요소 제한: 요소는 반드시 immutable 자료형만 가능
생성 방식: {} 또는 set() / 빈 set은 반드시 set()
활용 분야: 중복 제거, 로그/기록 데이터 처리, 권한/그룹 비교, 교차 분석 등
리스트 중복 제거 시 가장 빠르고 간단한 방식: set(list)
주요 메서드:
요소 조작 → add, remove, discard, pop, clear, update
집합 비교 → issubset, issuperset, isdisjoint
➡ 결론: Set은 “고유 값 관리”와 “비교·탐색 최적화”가 필요한 모든 상황에서 리스트보다 훨씬 단순하고 빠르게 문제를 해결해주는 핵심 자료형이다.
6. 아웃트로
Set은 파이썬에서 가장 직관적이면서도 강력한 자료형 중 하나이다.
복잡한 데이터에서도 중복 제거, 빠른 탐색, 비교 연산을 통해 효율적인 데이터 처리와 분석이 가능하게 한다.
특히 데이터 분석·로그 처리·권한 관리·여러 그룹 비교와 같은 상황에서
Set은 리스트나 튜플로는 구현하기 복잡한 기능을 단순하게 해결해주는 핵심 도구다.
집합의 개념을 이해하면 이후 딕셔너리, 조건문, 반복문, 알고리즘 문제에서도 큰 도움이 된다.