집합(set)은 「중복을 허용하지 않는 순서 없는 묶음」입니다.
중괄호 { } 안에 값을 나열해 만듭니다.
fruits = {"사과", "배", "감"}.
빈 집합은 {} 가 아니라 set()으로 만들어야 합니다 — {}는 빈 딕셔너리입니다.
집합의 가장 큰 매력은 「자동 중복 제거」와 「빠른 멤버십 확인」입니다.
set([1, 2, 2, 3, 3, 3])은 {1, 2, 3}이 됩니다.
또 「3 in my_set」 검사가 매우 빠릅니다 — 리스트의 「in」보다 평균적으로 훨씬 효율적입니다.
수학의 집합 연산을 그대로 지원합니다.
a | b — 합집합, a & b — 교집합, a - b — 차집합, a ^ b — 대칭차집합.
두 묶음을 비교해 공통점·차이를 찾을 때 매우 편리합니다.
비유하자면 집합은 「학생 명단」과 같습니다.
같은 학생이 두 번 들어가지 않고, 순서는 중요하지 않습니다.
한 학생이 명단에 있는지를 빠르게 확인할 수 있습니다.
「두 반의 공통 학생을 찾기」 같은 작업도 한 줄로 끝납니다.
단점은 「인덱스로 접근 못 함」(my_set[0] 불가능)과 「순서 없음」(매 실행에서 다른 순서로 나올 수 있음)입니다.
그래서 「순서가 중요하면 리스트, 중복 제거·빠른 검색이 중요하면 집합」으로 구분해 사용합니다.
한 줄 요약
집합은 중복 없는 순서 없는 묶음으로 자동 중복 제거와 빠른 멤버십 확인이 강점입니다.
합집합·교집합·차집합 같은 수학 연산을 그대로 지원합니다.
더 알아볼 것
- frozenset — 불변 집합
- 집합 컴프리헨션
- 리스트의 중복을 빠르게 제거하는 법