🔥 세트와 프로즌세트

438자
5분

이 장에서는 파이썬에서 사용되는 데이터 구조 중 "세트(Set)"와 "프로즌세트(Frozenset)"에 대해 자세히 알아보겠습니다. 세트와 프로즌세트는 중복을 허용하지 않고 고유한 값을 저장하는 데 사용되며, 파이썬 기초를 마스터하는 데 중요한 역할을 합니다. 이 장에서는 세트와 프로즌세트의 개념, 활용 방법, 그리고 다양한 예제를 통해 쉽게 이해할 수 있도록 설명하겠습니다.

세트와 프로즌세트란?

세트는 파이썬의 내장 데이터 타입 중 하나로, 중복을 허용하지 않고 순서가 없는 값을 저장하는 자료구조입니다. 세트는 중괄호 {}를 사용하여 생성하며, 각 요소는 쉼표로 구분됩니다.

프로즌세트는 세트와 유사하지만, 불변(immutable)한 자료구조입니다. 따라서 프로즌세트의 요소를 수정할 수 없습니다.

예를 들어, 세트와 프로즌세트를 생성하는 방법은 다음과 같습니다.

my_set = {1, 2, 3, 4, 5}  # 세트 생성
my_frozenset = frozenset([1, 2, 3, 4, 5])  # 프로즌세트 생성
python

세트의 기본 연산

세트의 기본 연산에 대해 알아봅시다.

요소 추가

add() 메서드를 사용하여 세트에 새로운 요소를 추가할 수 있습니다.

my_set.add(6)  # 세트에 6을 추가
python

요소 제거

remove() 메서드를 사용하여 세트에서 특정 요소를 제거할 수 있습니다.

my_set.remove(3)  # 세트에서 3을 제거
python

교집합, 합집합, 차집합

세트 간의 교집합, 합집합, 차집합 연산을 수행할 수 있습니다.

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}
python

프로즌세트의 불변성

프로즌세트의 불변성에 대해 알아봅시다.

요소 추가와 제거

프로즌세트는 불변하기 때문에 요소를 추가하거나 제거할 수 없습니다.

my_frozenset.add(6)      # 오류 발생: 프로즌세트는 수정할 수 없음
my_frozenset.remove(3)   # 오류 발생: 프로즌세트는 수정할 수 없음
python

세트와 프로즌세트 활용

세트와 프로즌세트의 활용 예제를 살펴봅시다.

중복 제거

세트는 중복을 허용하지 않으므로 리스트나 튜플에서 중복 요소를 제거할 때 유용합니다.

my_list = [1, 2, 2, 3, 4, 4, 5]
unique_set = set(my_list)  # 중복 제거
python

멤버십 확인

세트는 멤버십(원소가 포함되어 있는지 여부)을 빠르게 확인할 수 있습니다.

my_set = {1, 2, 3, 4, 5}
is_member = 3 in my_set  # True 반환
python

연습문제

  1. 다음 두 세트를 생성하고, 교집합과 합집합을 구하세요.
set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
python
  1. 주어진 리스트에서 중복된 요소를 제거하고 세트로 변환하세요.
my_list = [2, 4, 2, 7, 9, 4, 1]
python
  1. 프로즌세트를 사용하여 두 개의 집합을 생성하고, 두 집합의 합집합을 구하세요.
frozenset1 = frozenset({1, 2, 3})
frozenset2 = frozenset({3, 4, 5})
python
  1. 다음 세트에서 요소 5를 제거하세요.
my_set = {1, 2, 3, 4, 5}
python
  1. 주어진 두 세트에서 차집합을 구하세요.
set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
python
  1. 프로즌세트를 사용하여 요소를 추가하려고 할 때 발생하는 오류를 설명하세요.
  2. 세트를 사용하여 멤버십을 확인하는 예제를 제시하세요.