콘텐츠 내 자동삽입광고

광고1

posted by 초코생크림빵 2025. 8. 8. 15:49
반응형

파이썬의 세트(set)는 순서가 없고(unordered), 중복을 허용하지 않는(unique) 데이터 컬렉션입니다. 딕셔너리와 마찬가지로 중괄호 {}를 사용하지만, 키(key) 없이 값(value)만으로 이루어져 있습니다. 세트는 주로 중복된 요소를 제거하거나, 두 집합 간의 교집합, 합집합, 차집합 등을 계산할 때 사용됩니다.


세트 생성하기 ✍️

세트는 중괄호 {}를 사용하여 생성하며, 각 요소는 쉼표로 구분합니다. 빈 세트를 만들 때는 {}를 사용하면 빈 딕셔너리가 되므로, set() 생성자를 사용해야 합니다.

예제:

Python
 
# 세트 생성하기 (중복된 요소는 자동으로 제거됩니다.)
my_set = {1, 2, 3, 3, 4, 5}
print(my_set) # 출력: {1, 2, 3, 4, 5}

# 리스트를 세트로 변환하여 중복 제거
my_list = [1, 2, 2, 3, 4, 4, 5]
unique_items = set(my_list)
print(unique_items) # 출력: {1, 2, 3, 4, 5}

# 빈 세트 생성
empty_set = set()
print(type(empty_set)) # 출력: <class 'set'>

# 참고: {}는 빈 딕셔너리입니다.
empty_dict = {}
print(type(empty_dict)) # 출력: <class 'dict'>

세트의 주요 특징 ✨

  1. 순서가 없음(Unordered): 세트는 인덱스를 기반으로 요소를 저장하지 않기 때문에, my_set[0]과 같이 인덱스로 요소에 접근할 수 없습니다.
  2. 중복을 허용하지 않음(Unique): 세트는 동일한 값을 여러 번 저장하지 않습니다. 세트를 생성하거나 요소를 추가할 때, 이미 존재하는 값은 무시됩니다.
  3. 변경 가능(Mutable): 세트는 요소를 추가하거나 삭제할 수 있습니다. 그러나 튜플이나 문자열처럼 불변(immutable) 객체만 세트의 요소로 포함될 수 있습니다.

예제:

Python
 
my_set = {10, 20, 30}

# 세트에 요소 추가하기
my_set.add(40)
print(my_set) # 출력: {10, 20, 30, 40}

# 이미 있는 요소를 추가하면 무시됩니다.
my_set.add(20)
print(my_set) # 출력: {10, 20, 30, 40}

# 여러 요소를 한꺼번에 추가하기
my_set.update({50, 60})
print(my_set) # 출력: {10, 20, 30, 40, 50, 60}

# 요소 삭제하기
my_set.remove(10) # '10'을 삭제
print(my_set) # 출력: {20, 30, 40, 50, 60}

# 존재하지 않는 요소를 remove()로 삭제 시 KeyError 발생
# my_set.remove(100) # KeyError

# 존재하지 않는 요소도 오류 없이 삭제하고 싶다면 discard() 사용
my_set.discard(100)
print(my_set) # 출력: {20, 30, 40, 50, 60}

집합 연산 🤝

세트의 가장 강력한 기능 중 하나는 수학의 집합처럼 다양한 연산을 수행할 수 있다는 것입니다.

예제:

Python
 
set_a = {1, 2, 3, 4, 5}
set_b = {4, 5, 6, 7, 8}

# 1. 교집합 (intersection): 두 세트 모두에 존재하는 요소
intersection_set = set_a.intersection(set_b)
# 또는 연산자 & 사용
# intersection_set = set_a & set_b
print(intersection_set) # 출력: {4, 5}

# 2. 합집합 (union): 두 세트의 모든 요소
union_set = set_a.union(set_b)
# 또는 연산자 | 사용
# union_set = set_a | set_b
print(union_set) # 출력: {1, 2, 3, 4, 5, 6, 7, 8}

# 3. 차집합 (difference): 한 세트에만 존재하는 요소
difference_set_a_b = set_a.difference(set_b)
# 또는 연산자 - 사용
# difference_set_a_b = set_a - set_b
print(difference_set_a_b) # 출력: {1, 2, 3}

# 4. 대칭 차집합 (symmetric difference): 두 세트 중 한쪽에만 존재하는 요소
symmetric_difference_set = set_a.symmetric_difference(set_b)
# 또는 연산자 ^ 사용
# symmetric_difference_set = set_a ^ set_b
print(symmetric_difference_set) # 출력: {1, 2, 3, 6, 7, 8}

이처럼 세트는 중복을 처리하고, 집합 연산을 통해 데이터를 효율적으로 처리해야 할 때 매우 유용한 자료형입니다.

반응형

콘텐츠 내 자동삽입광고