🔥 세트와 프로즌세트
이 장에서는 파이썬에서 사용되는 데이터 구조 중 "세트(Set)"와 "프로즌세트(Frozenset)"에 대해 자세히 알아보겠습니다. 세트와 프로즌세트는 중복을 허용하지 않고 고유한 값을 저장하는 데 사용되며, 파이썬 기초를 마스터하는 데 중요한 역할을 합니다. 이 장에서는 세트와 프로즌세트의 개념, 활용 방법, 그리고 다양한 예제를 통해 쉽게 이해할 수 있도록 설명하겠습니다.
세트와 프로즌세트란?
세트는 파이썬의 내장 데이터 타입 중 하나로, 중복을 허용하지 않고 순서가 없는 값을 저장하는 자료구조입니다. 세트는 중괄호 {}를 사용하여 생성하며, 각 요소는 쉼표로 구분됩니다.
프로즌세트는 세트와 유사하지만, 불변(immutable)한 자료구조입니다. 따라서 프로즌세트의 요소를 수정할 수 없습니다.
예를 들어, 세트와 프로즌세트를 생성하는 방법은 다음과 같습니다.
my_set = {1, 2, 3, 4, 5} # 세트 생성
my_frozenset = frozenset([1, 2, 3, 4, 5]) # 프로즌세트 생성my_set = {1, 2, 3, 4, 5} # 세트 생성
my_frozenset = frozenset([1, 2, 3, 4, 5]) # 프로즌세트 생성세트의 기본 연산
세트의 기본 연산에 대해 알아봅시다.
요소 추가
add() 메서드를 사용하여 세트에 새로운 요소를 추가할 수 있습니다.
my_set.add(6) # 세트에 6을 추가my_set.add(6) # 세트에 6을 추가요소 제거
remove() 메서드를 사용하여 세트에서 특정 요소를 제거할 수 있습니다.
my_set.remove(3) # 세트에서 3을 제거my_set.remove(3) # 세트에서 3을 제거교집합, 합집합, 차집합
세트 간의 교집합, 합집합, 차집합 연산을 수행할 수 있습니다.
set1 = {1, 2, 3}
set2 = {3, 4, 5}
intersection = set1.intersection(set2) # 교집합: {3}
union = set1.union(set2) # 합집합: {1, 2, 3, 4, 5}
difference = set1.difference(set2) # 차집합: {1, 2}set1 = {1, 2, 3}
set2 = {3, 4, 5}
intersection = set1.intersection(set2) # 교집합: {3}
union = set1.union(set2) # 합집합: {1, 2, 3, 4, 5}
difference = set1.difference(set2) # 차집합: {1, 2}프로즌세트의 불변성
프로즌세트의 불변성에 대해 알아봅시다.
요소 추가와 제거
프로즌세트는 불변하기 때문에 요소를 추가하거나 제거할 수 없습니다.
my_frozenset.add(6) # 오류 발생: 프로즌세트는 수정할 수 없음
my_frozenset.remove(3) # 오류 발생: 프로즌세트는 수정할 수 없음my_frozenset.add(6) # 오류 발생: 프로즌세트는 수정할 수 없음
my_frozenset.remove(3) # 오류 발생: 프로즌세트는 수정할 수 없음세트와 프로즌세트 활용
세트와 프로즌세트의 활용 예제를 살펴봅시다.
중복 제거
세트는 중복을 허용하지 않으므로 리스트나 튜플에서 중복 요소를 제거할 때 유용합니다.
my_list = [1, 2, 2, 3, 4, 4, 5]
unique_set = set(my_list) # 중복 제거my_list = [1, 2, 2, 3, 4, 4, 5]
unique_set = set(my_list) # 중복 제거멤버십 확인
세트는 멤버십(원소가 포함되어 있는지 여부)을 빠르게 확인할 수 있습니다.
my_set = {1, 2, 3, 4, 5}
is_member = 3 in my_set # True 반환my_set = {1, 2, 3, 4, 5}
is_member = 3 in my_set # True 반환연습문제
- 다음 두 세트를 생성하고, 교집합과 합집합을 구하세요.
set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}- 주어진 리스트에서 중복된 요소를 제거하고 세트로 변환하세요.
my_list = [2, 4, 2, 7, 9, 4, 1]my_list = [2, 4, 2, 7, 9, 4, 1]- 프로즌세트를 사용하여 두 개의 집합을 생성하고, 두 집합의 합집합을 구하세요.
frozenset1 = frozenset({1, 2, 3})
frozenset2 = frozenset({3, 4, 5})frozenset1 = frozenset({1, 2, 3})
frozenset2 = frozenset({3, 4, 5})- 다음 세트에서 요소 5를 제거하세요.
my_set = {1, 2, 3, 4, 5}my_set = {1, 2, 3, 4, 5}- 주어진 두 세트에서 차집합을 구하세요.
set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}- 프로즌세트를 사용하여 요소를 추가하려고 할 때 발생하는 오류를 설명하세요.
- 세트를 사용하여 멤버십을 확인하는 예제를 제시하세요.











