Python 세트: 연산, 방법 및 세트 이론

Python의 마스터 세트. 고유한 값을 저장하고, 교차점, 합집합, 차이점을 실행하고, 해싱의 성능 이점을 이해하는 방법을 알아보세요.

에디터에서 사용해 보세요

개요

세트는 Python에서 고유한 요소의 순서가 지정되지 않은 모음입니다. 세트는 해시 테이블을 기반으로 구축되므로 특정 요소가 컬렉션 내에 있는지 확인하는 멤버십 테스트에 고도로 최적화됩니다. 항목이 목록에 있는지 확인하려면 모든 항목을 검색해야 하지만(`O(N)` 작업), 집합의 구성원 확인은 `O(1)` 상수 시간에 실행됩니다. 이는 중복 제거 및 대량 데이터 필터링을 위한 세트를 매우 강력하게 만듭니다.

집합은 콜론 없이 값을 포함하는 중괄호 `{}`를 사용하거나 내장된 `set()` 생성자를 사용하여 초기화됩니다. 중괄호는 사전에도 사용되므로 빈 중괄호 `{}`를 작성하면 빈 사전이 초기화됩니다. 빈 세트를 초기화하려면 `set()`을 사용해야 합니다. 집합 내의 요소는 해시 가능하고 불변이어야 합니다. 즉, 숫자, 문자열 및 튜플을 저장할 수 있지만 목록이나 사전은 집합 내에 저장할 수 없습니다.

기본적인 추가 및 삭제 방법 외에도 Python 세트는 기본적으로 수학적 집합 이론의 작업을 지원합니다. 여기에는 컬렉션을 병합하기 위한 Union(`|` 또는 `.union()`), 공통 요소를 찾기 위한 Intersection(`&` 또는 `.intersection()`), 한 컬렉션에 고유한 요소를 찾기 위한 Difference(`-` 또는 `.difference()`), 두 세트 모두가 아닌 두 세트 중 하나의 항목을 검색하기 위한 Symmetric Difference(`^`)가 포함됩니다. 마스터링 세트를 사용하면 깨끗하고 성능이 뛰어나며 읽기 쉬운 코드로 복잡한 그룹화 문제를 해결할 수 있습니다.

코드 및 실행 출력

목록에서 중복 항목을 제거하고 수학적 집합 작업을 수행합니다.

# Removing duplicates
roles_list = ["admin", "user", "editor", "admin", "user"]
# Sort the set to guarantee deterministic printed output
unique_roles = sorted(list(set(roles_list)))
print(f"Unique roles: {unique_roles}")

# Set operations
dev_skills = {"python", "javascript", "sql"}
ops_skills = {"sql", "docker", "kubernetes"}

# Union and Intersection (sorted for deterministic output)
all_skills = sorted(list(dev_skills | ops_skills))
common_skills = sorted(list(dev_skills & ops_skills))
unique_to_dev = sorted(list(dev_skills - ops_skills))

print(f"Union: {all_skills}")
print(f"Intersection: {common_skills}")
print(f"Dev only: {unique_to_dev}")
터미널 출력
Unique roles: ['admin', 'editor', 'user']
Union: ['docker', 'javascript', 'kubernetes', 'python', 'sql']
Intersection: ['sql']
Dev only: ['javascript', 'python']

단계별 구현

  • API 결과 또는 CSV 파일에서 중복 항목 제거
  • 두 데이터베이스 간의 공통 요소 결정
  • 대규모 ID 목록에서 빠른 조회 작업 수행

자주 묻는 질문

세트의 요소는 순서가 지정되어 있나요?

아니요, 세트는 순서가 없습니다. 인덱스(예: set[0])로 요소에 액세스하거나 요소를 분할할 수 없습니다.

세트의 요소를 어떻게 추가하거나 제거하나요?

단일 요소를 삽입하려면 .add() 메서드를 사용하고, 요소를 제거하려면 .remove() 또는 .discard()를 사용하세요. .discard()는 요소가 누락되어도 오류를 발생시키지 않으므로 더 안전합니다.

관련 주제

권장 Python 리소스

관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.