--- id: python-sets-join title: "Python Sets Join" category: "Programming_Language" status: "draft" verification_status: "conceptual" canonical_id: "" aliases: ["Join Sets", "union", "intersection", "difference", "symmetric_difference", "파이썬 셋 연산"] duplicate_of: "" source_trust_level: "B" confidence_score: 0.9 created_at: 2026-07-04 updated_at: 2026-07-04 review_reason: "" merge_history: [] tags: ["python", "programming", "w3schools", "sets", "union", "intersection", "difference"] raw_sources: ["https://www.w3schools.com/python/python_sets_join.asp"] applied_in: [] github_commit: "" --- # [[Python Sets Join]] ## 🎯 한 줄 통찰 (One-line insight) Python sets implement true mathematical set algebra — union (`|`), intersection (`&`), difference (`-`), symmetric difference (`^`) — each with both a new-set-returning method and an in-place `_update()` variant, and operators only work between sets while methods also accept other iterables. [S1] ## 🧠 핵심 개념 (Core concepts) - **`union()` / `|`** — all items from both sets (duplicates removed). [S1] - **`intersection()` / `&`** — only items present in BOTH sets. [S1] - **`difference()` / `-`** — items in the first set that are NOT in the other set(s). [S1] - **`symmetric_difference()` / `^`** — all items EXCEPT the duplicates (opposite of intersection). [S1] - **`update()` / `intersection_update()` / `difference_update()` / `symmetric_difference_update()`** — in-place variants that mutate the original set instead of returning a new one. [S1] - **Operator vs. method scope** — `|`/`&`/`-`/`^` only work between two sets; the method forms (`union()` etc.) also accept other iterables (lists, tuples). [S1] ## 🧩 추출된 패턴 (Extracted patterns) - **Method-vs-operator asymmetry** — every set operation has both a method (flexible input type, e.g. `x.union(a_tuple)`) and an operator (sets-only, e.g. `x | y`) — use the method when joining with a non-set iterable. [S1] - **New-set vs. in-place naming convention** — the base method name (`union`, `intersection`, `difference`, `symmetric_difference`) always returns a NEW set; appending `_update` always mutates the ORIGINAL set instead. [S1] ## 📖 세부 내용 (Details) - Union: `set3 = set1.union(set2)` or `set3 = set1 | set2`; multiple sets: `set1.union(set2, set3, set4)`. [S1] - Union with a tuple (method only, not `|`): `z = x.union(y)` where `y` is a tuple. [S1] - Update (in-place union): `set1.update(set2)`. [S1] - Intersection: `set3 = set1.intersection(set2)` or `set1 & set2`; in-place: `set1.intersection_update(set2)`. [S1] - Difference: `set3 = set1.difference(set2)` or `set1 - set2`; in-place: `set1.difference_update(set2)`. [S1] - Symmetric difference: `set3 = set1.symmetric_difference(set2)` or `set1 ^ set2`; in-place: `set1.symmetric_difference_update(set2)`. [S1] ## ⚖️ 모순 및 업데이트 (Contradictions & updates) - **연산자는 셋끼리만**: `|`,`&`,`-`,`^` 연산자는 셋과 셋 사이에서만 동작하며, 튜플/리스트와 결합하려면 반드시 메서드 형태(union() 등)를 써야 한다. [S1] ## 🛠️ 적용 사례 (Applied in summary) 현재 발견된 실제 적용 사례가 없습니다 — 데이터 집합 간의 공통/차집합 연산이 필요한 모든 로직(예: 태그 교집합, 권한 차집합)에서 재사용되는 표준 도구다. [S1] ## 💻 코드 패턴 (Code patterns) Four core set operations (Python): ```python set1 = {"apple", "banana", "cherry"} set2 = {"google", "microsoft", "apple"} print(set1 | set2) # union print(set1 & set2) # intersection print(set1 - set2) # difference print(set1 ^ set2) # symmetric difference ``` ## ✅ 검증 상태 및 신뢰도 - **상태:** draft - **검증 단계:** conceptual - **출처 신뢰도:** B (W3Schools — widely used educational reference, not a primary standards body) - **신뢰 점수:** 0.90 - **중복 검사 결과:** 신규 생성 (New discovery) ## 🔗 지식 그래프 (Knowledge Graph) - **상위/루트:** [[Python Tutorial]] - **관련 개념:** [[Python Sets]], [[Python Sets Add]], [[Python Frozenset]], [[Python Sets Methods]] - **참조 맥락:** 수학적 집합 연산의 Python 구현 — 메서드(유연한 입력)와 연산자(셋 전용)의 차이를 이해해야 한다. ## 📚 출처 (Sources) - [S1] W3Schools — Python - Join Sets — https://www.w3schools.com/python/python_sets_join.asp ## 📝 변경 이력 (Change history) - 2026-07-04: Initial draft synthesized from the W3Schools "Python - Join Sets" page (Astra wiki-curation, P-Reinforce v3.1 format).