본문 바로가기

언어/Python

[ 파이썬 / Python ] 세트 사용하기

반응형

Python의 세트(Set)는 순서가 없고 중복을 허용하지 않는 데이터 구조입니다. 세트는 중괄호 {}를 사용하여 정의되며, 리스트, 튜플과 달리 각 요소의 순서가 보장되지 않습니다. 또한, 중복된 값을 자동으로 제거합니다. 세트는 수학에서의 집합과 비슷한 연산을 제공하며, 이를 통해 다양한 데이터 처리 작업을 효율적으로 수행할 수 있습니다.

세트의 특징

  1. 중복 없음: 세트는 중복된 값을 허용하지 않습니다.
  2. 순서 없음: 세트는 순서를 유지하지 않습니다.
  3. 변경 가능: 세트는 변경 가능한(mutable) 자료형으로, 요소를 추가하거나 제거할 수 있습니다.
  4. 다양한 데이터 타입: 세트는 다양한 데이터 타입의 요소를 가질 수 있습니다. 단, 세트의 요소는 변경 불가능(immutable)해야 합니다.

세트 생성

# 빈 세트 생성
empty_set = set()

# 초기값을 가지는 세트 생성
my_set = {1, 2, 3, 4, 5}

# 중복된 값이 자동으로 제거됨
my_set_with_duplicates = {1, 2, 2, 3, 4, 4, 5}
print(my_set_with_duplicates)  # 출력: {1, 2, 3, 4, 5}

세트 요소 추가 및 제거

my_set = {1, 2, 3}

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

# 여러 요소 추가
my_set.update([5, 6])
print(my_set)  # 출력: {1, 2, 3, 4, 5, 6}

# 요소 제거
my_set.remove(4)  # 요소가 없으면 KeyError 발생
print(my_set)  # 출력: {1, 2, 3, 5, 6}

my_set.discard(7)  # 요소가 없어도 오류 발생하지 않음
print(my_set)  # 출력: {1, 2, 3, 5, 6}

# 임의의 요소 제거 및 반환
removed_element = my_set.pop()
print(removed_element)  # 출력: 1 (임의의 요소)
print(my_set)  # 출력: {2, 3, 5, 6}

# 모든 요소 제거
my_set.clear()
print(my_set)  # 출력: set()

세트 연산

세트는 수학적 집합 연산을 지원합니다.

set1 = {1, 2, 3}
set2 = {3, 4, 5}

# 합집합
print(set1 | set2)  # 출력: {1, 2, 3, 4, 5}
print(set1.union(set2))  # 출력: {1, 2, 3, 4, 5}

# 교집합
print(set1 & set2)  # 출력: {3}
print(set1.intersection(set2))  # 출력: {3}

# 차집합
print(set1 - set2)  # 출력: {1, 2}
print(set1.difference(set2))  # 출력: {1, 2}

# 대칭 차집합
print(set1 ^ set2)  # 출력: {1, 2, 4, 5}
print(set1.symmetric_difference(set2))  # 출력: {1, 2, 4, 5}

세트 메서드

세트는 다양한 메서드를 제공합니다.

add(), update()

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

remove(), discard(), pop(), clear()

my_set = {1, 2, 3}
my_set.remove(2)  # 요소가 없으면 오류 발생
my_set.discard(3)  # 요소가 없어도 오류 발생하지 않음
popped_element = my_set.pop()  # 임의의 요소 제거
print(popped_element)
my_set.clear()  # 모든 요소 제거
print(my_set)  # 출력: set()

union(), intersection(), difference(), symmetric_difference()

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

issubset(), issuperset(), isdisjoint()

set1 = {1, 2, 3}
set2 = {1, 2}
set3 = {4, 5}

print(set2.issubset(set1))  # 출력: True
print(set1.issuperset(set2))  # 출력: True
print(set1.isdisjoint(set3))  # 출력: True

세트 컴프리헨션

리스트 컴프리헨션과 비슷하게 세트 컴프리헨션을 사용할 수 있습니다.

squared_set = {x**2 for x in range(10)}
print(squared_set)  # 출력: {0, 1, 4, 9, 16, 25, 36, 49, 64, 81}

세트의 사용 예시

  1. 중복 요소 제거: 리스트에서 중복된 요소를 제거할 때 유용합니다.
  2. my_list = [1, 2, 2, 3, 4, 4, 5] unique_set = set(my_list) print(unique_set) # 출력: {1, 2, 3, 4, 5}
  3. 집합 연산: 데이터 분석에서 교집합, 합집합 등의 집합 연산을 수행할 때 유용합니다.
  4. set1 = {1, 2, 3} set2 = {3, 4, 5} print(set1 & set2) # 출력: {3}

이와 같이 Python의 세트는 중복을 허용하지 않으며, 수학적 집합 연산을 효율적으로 수행할 수 있는 강력한 데이터 구조입니다. 이를 통해 다양한 데이터 처리 작업을 효율적으로 수행할 수 있습니다.

반응형