본문 바로가기

IT/Python

Python 프로그래밍: 세트 사용하기

1. 세트란?

Python의 세트(Set)는 중복된 요소를 갖지 않는 순서가 없는 컬렉션입니다. 세트는 `{}` 또는 `set()` 함수를 사용하여 생성할 수 있습니다. 리스트나 튜플과 달리, 세트는 각 요소의 위치나 삽입 순서를 기억하지 않습니다. 이로 인해 세트는 데이터의 중복을 허용하지 않아 유일한 요소만을 저장합니다.

my_set = {1, 2, 3, 4, 5, 5, 5}
print(my_set)  # 출력: {1, 2, 3, 4, 5}

 

 

2. 세트의 활용

세트는 여러 가지 용도로 활용될 수 있습니다. 중복된 요소를 제거하는 데 유용하며, 또한 수학에서의 집합 연산(합집합, 교집합, 차집합 등)을 수행할 수 있습니다.

a = {1, 2, 3, 4, 5}
b = {4, 5, 6, 7, 8}

print(a.union(b))  # 합집합 출력: {1, 2, 3, 4, 5, 6, 7, 8}
print(a.intersection(b))  # 교집합 출력: {4, 5}
print(a.difference(b))  # 차집합 출력: {1, 2, 3}

 

 

3. 세트의 메서드

세트는 다양한 내장 메서드를 제공합니다. `add`, `remove`, `pop` 등의 메서드를 사용하여 세트의 요소를 추가, 제거하거나 임의의 요소를 꺼낼 수 있습니다.

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

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

value = my_set.pop()  # 임의의 요소 꺼내기
print(value)  # 출력: 2 (출력 값은 실행마다 다를 수 있음)

 

 

4. 불변 세트: frozenset

Python은 변경 불가능한 버전의 세트인 `frozenset`을 제공합니다. `frozenset`은 `set`과 동일한 메서드를 제공하지만, 한 번 생성되면 요소를 추가하거나 제거할 수 없습니다. 이러한 특성 때문에 `frozenset`은 딕셔너리의 키나 다른 세트의 요소로 사용할 수 있습니다.

my_frozenset = frozenset([1, 2, 3, 4])
print(my_frozenset)  # 출력: frozenset({1, 2, 3, 4})

# my_frozenset.add(5)  # 에러! frozenset은 변경할 수 없습니다.

 

 

5. 세트와 리스트, 튜플 간의 변환

세트는 리스트나 튜플로 쉽게 변환할 수 있습니다. 이를 활용하면 리스트나 튜플의 중복된 요소를 제거하는 등의 작업을 쉽게 처리할 수 있습니다.

my_list = [1, 2, 2, 3, 4, 4, 5, 5]
my_set = set(my_list)  # 리스트를 세트로 변환
print(my_set)  # 출력: {1, 2, 3, 4, 5}

my_new_list = list(my_set)  # 세트를 리스트로 변환
print(my_new_list)  # 출력: [1, 2, 3, 4, 5]

 

 

6. 결론

Python의 세트는 중복되지 않는 요소를 저장하는 데 유용한 데이터 구조입니다. 여러가지 내장 메서드를 통해 요소를 추가하거나 제거할 수 있으며, 집합 연산을 통해 여러 세트 간의 관계를 분석할 수 있습니다. 불변한 `frozenset`을 통해 딕셔너리의 키나 다른 세트의 요소로 사용할 수 있는 세트를 만들 수도 있습니다. 세트는 리스트나 튜플과 쉽게 변환할 수 있어, Python에서 데이터를 다루는 데 있어 중요한 도구 중 하나입니다.