본문 바로가기

파이썬 집합(Set) 완벽 가이드: 사용법과 예제 정리

ggqudrndl 2024. 12. 7.

파이썬의 집합(Set) 자료형은 중복 제거와 다양한 연산에 유용합니다. 합집합, 교집합, 차집합 등 기본 연산과 활용법을 상세히 알아보세요. 실용적인 예제도 포함되어 있습니다.


파이썬 집합(Set) 사용법과 활용법

파이썬에서 집합(Set)은 중복을 허용하지 않고 순서가 없는 데이터 구조입니다. 이는 수학에서의 집합 개념과 유사하며, 데이터의 고유성을 유지하거나 특정 연산을 수행할 때 매우 유용합니다. 이번 글에서는 파이썬 집합의 생성 방법, 주요 연산, 활용 사례 등을 자세히 알아보겠습니다.

 

👇👇👇 내용 자세히 보기  👇👇👇


파이썬 집합(Set)이란?

파이썬의 집합(Set)은 다음과 같은 특징을 가지고 있습니다:

  • 중복을 허용하지 않음: 동일한 값은 한 번만 저장됩니다.
  • 순서가 없음: 저장된 데이터의 순서는 정해져 있지 않습니다.
  • 변경 가능(Mutable): 요소를 추가하거나 삭제할 수 있습니다.

집합은 리스트, 튜플, 딕셔너리와 함께 파이썬의 주요 컬렉션 자료형 중 하나로, 특히 데이터의 고유성을 보장해야 할 때 유용합니다.


집합 생성 방법

파이썬에서 집합을 생성하는 방법은 다음 두 가지입니다:

  1. 중괄호({})를 사용:
  2. my_set = {1, 2, 3} print(my_set) # 출력: {1, 2, 3}
  3. set() 함수 사용:
  4. empty_set = set() # 빈 집합 생성 list_to_set = set([1, 2, 3, 3]) # 리스트를 집합으로 변환 print(list_to_set) # 출력: {1, 2, 3}

집합의 주요 연산

파이썬에서는 수학적 집합 연산을 쉽게 수행할 수 있는 다양한 메서드와 연산자를 제공합니다.

합집합(Union)

두 집합의 모든 요소를 결합하여 새로운 집합을 생성합니다.

set1 = {1, 2, 3}
set2 = {3, 4, 5}
union_set = set1.union(set2)
print(union_set)  # 출력: {1, 2, 3, 4, 5}

# 또는 "|" 연산자 사용
print(set1 | set2)  # 출력: {1, 2, 3, 4, 5}

교집합(Intersection)

두 집합에서 공통된 요소만 포함하는 새로운 집합을 생성합니다.

intersection_set = set1.intersection(set2)
print(intersection_set)  # 출력: {3}

# 또는 "&" 연산자 사용
print(set1 & set2)  # 출력: {3}

차집합(Difference)

첫 번째 집합에서 두 번째 집합에 포함되지 않은 요소들로 구성된 새로운 집합을 생성합니다.

difference_set = set1.difference(set2)
print(difference_set)  # 출력: {1, 2}

# 또는 "-" 연산자 사용
print(set1 - set2)  # 출력: {1, 2}

대칭 차집합(Symmetric Difference)

두 집합 중 한쪽에만 포함된 요소들로 구성된 새로운 집합을 생성합니다.

symmetric_diff = set1.symmetric_difference(set2)
print(symmetric_diff)  # 출력: {1, 2, 4, 5}

# 또는 "^" 연산자 사용
print(set1 ^ set2)  # 출력: {1, 2, 4, 5}

요소 추가 및 삭제

요소 추가

add() 메서드를 사용하여 단일 요소를 추가할 수 있습니다.

my_set = {1, 2}
my_set.add(3)
print(my_set)  # 출력: {1, 2, 3}

여러 요소 추가

update() 메서드를 사용하면 여러 요소를 한 번에 추가할 수 있습니다.

my_set.update([4, 5])
print(my_set)  # 출력: {1, 2, 3, 4, 5}

요소 삭제

remove() 또는 discard() 메서드를 사용하여 특정 요소를 삭제할 수 있습니다.

my_set.remove(3)
print(my_set)  # 출력: {1, 2}

# discard는 없는 요소를 삭제하려 해도 에러가 발생하지 않음
my_set.discard(10)

집합의 활용 예제

중복 제거

리스트나 튜플에서 중복된 값을 제거하려면 set()을 사용할 수 있습니다.

numbers = [1, 2, 2, 3, 4]
unique_numbers = set(numbers)
print(unique_numbers)  # 출력: {1, 2, 3, 4}

데이터 비교 및 필터링

두 데이터셋 간의 공통점이나 차이를 쉽게 확인할 수 있습니다.

students_A = {"John", "Alice", "Bob"}
students_B = {"Alice", "Tom", "Bob"}

# 공통 학생 확인 (교집합)
common_students = students_A & students_B
print(common_students)  # 출력: {'Alice', 'Bob'}

# A에만 있는 학생 확인 (차집합)
only_A_students = students_A - students_B
print(only_A_students)  # 출력: {'John'}

주의사항 및 팁

  • 순서가 없음: 집합은 순서를 보장하지 않으므로 인덱싱이나 슬라이싱이 불가능합니다.
  • 중복 제거 자동화: 입력 데이터에서 중복을 자동으로 제거해야 할 때 매우 유용합니다.
  • 불변 객체만 저장 가능: 리스트나 딕셔너리와 같은 가변 객체는 집합에 포함될 수 없습니다.

결론

파이썬의 집합(Set) 자료형은 간단하면서도 강력한 기능들을 제공하여 다양한 상황에서 유용하게 사용할 수 있습니다. 특히 데이터의 고유성을 유지하거나 여러 데이터셋 간의 관계를 분석할 때 큰 도움이 됩니다. 이번 글에서 소개한 기본 개념과 활용법을 바탕으로 실무에서도 효율적으로 적용해 보세요.


자주 묻는 질문

Q1. 리스트와 집합의 차이는 무엇인가요?
A. 리스트는 순서를 유지하며 중복된 값을 허용하지만 집합은 순서를 유지하지 않으며 중복된 값을 허용하지 않습니다.

Q2. 빈 집합은 어떻게 생성하나요?
A. 빈 집합은 set()으로 생성하며 {}는 빈 딕셔너리를 나타냅니다.

Q3. 집합 내에서 가변 객체를 사용할 수 있나요?
A. 아니요. 리스트나 딕셔너리와 같은 가변 객체는 저장할 수 없습니다.

댓글