빈티지 테라피

[파이선초보탈출] Python - Sets 본문

코드 테라피

[파이선초보탈출] Python - Sets

밍키스튜디오 2024. 7. 31. 22:32
반응형

Python의 세트(Set)는 중복을 허용하지 않는 데이터 컬렉션으로, 집합 이론의 개념을 컴퓨터 프로그래밍에 적용한 것입니다. 이 블로그 포스트에서는 Python에서 세트를 사용하는 방법과 실전 활용 예제를 다룹니다.

목차

  1. 세트(Set)란 무엇인가?
  2. 세트 생성 및 기본 연산
    • 세트 생성
    • 세트 추가, 제거
    • 세트 연산 (합집합, 교집합, 차집합)
  3. 세트의 활용 예제
    • 중복 제거
    • 요소 검사
    • 데이터베이스 조회 결과 비교
  4. 세트의 고급 기능
    • 세트 내포
    • 불변 세트 (frozenset)
  5. 결론

1. 세트(Set)란 무엇인가?

세트는 중복되지 않는 요소들의 모음으로, 수학적 집합과 비슷한 개념입니다. 순서가 없기 때문에 인덱싱이 불가능하고, 리스트나 튜플과는 다르게 해시 가능한 객체만 포함할 수 있습니다.

# 세트 생성 예시
fruits = {"apple", "banana", "cherry"}
print(fruits)  # {'apple', 'banana', 'cherry'}

2. 세트 생성 및 기본 연산

세트 생성

세트는 {}를 사용하여 생성할 수 있으며, 리스트나 튜플을 이용해 변환할 수도 있습니다.

# 세트 생성
fruits = {"apple", "banana", "cherry"}

# 리스트를 세트로 변환
numbers = set([1, 2, 3, 4, 5])

# 빈 세트 생성 (주의: {}는 빈 딕셔너리로 간주됨)
empty_set = set()

세트 추가, 제거

세트에 요소를 추가하거나 제거하는 방법은 다음과 같습니다.

# 요소 추가
fruits.add("orange")
print(fruits)  # {'apple', 'banana', 'cherry', 'orange'}

# 요소 제거
fruits.remove("banana")
print(fruits)  # {'apple', 'cherry', 'orange'}

# 요소가 없는 경우 안전하게 제거
fruits.discard("grape")

세트 연산 (합집합, 교집합, 차집합)

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

A = {1, 2, 3}
B = {3, 4, 5}

# 합집합 (Union)
print(A | B)  # {1, 2, 3, 4, 5}

# 교집합 (Intersection)
print(A & B)  # {3}

# 차집합 (Difference)
print(A - B)  # {1, 2}
print(B - A)  # {4, 5}

3. 세트의 활용 예제

중복 제거

세트를 사용하여 리스트나 문자열에서 중복 요소를 쉽게 제거할 수 있습니다.

# 리스트에서 중복 제거
items = [1, 2, 2, 3, 4, 4, 5]
unique_items = list(set(items))
print(unique_items)  # [1, 2, 3, 4, 5]

요소 검사

세트는 특정 요소가 존재하는지 검사하는데 빠릅니다.

fruits = {"apple", "banana", "cherry"}
print("apple" in fruits)  # True
print("grape" in fruits)  # False

데이터베이스 조회 결과 비교

세트를 사용하여 두 데이터베이스 조회 결과의 차이를 비교할 수 있습니다.

db_results1 = {"John", "Alice", "Bob"}
db_results2 = {"Alice", "Bob", "Charlie"}

# 차이점 찾기
only_in_db1 = db_results1 - db_results2
only_in_db2 = db_results2 - db_results1

print(only_in_db1)  # {'John'}
print(only_in_db2)  # {'Charlie'}

4. 세트의 고급 기능

세트 내포

세트 내포를 사용하여 특정 조건에 맞는 요소들로 구성된 세트를 생성할 수 있습니다.

# 짝수만 포함하는 세트 생성
even_numbers = {x for x in range(10) if x % 2 == 0}
print(even_numbers)  # {0, 2, 4, 6, 8}

불변 세트 (frozenset)

frozenset은 변경할 수 없는 세트입니다. 일반 세트와 동일한 연산을 지원하지만, 요소를 추가하거나 제거할 수 없습니다.

# 불변 세트 생성
immutable_fruits = frozenset(["apple", "banana", "cherry"])

# 요소 추가 시도 (오류 발생)
immutable_fruits.add("orange")  # AttributeError

5. 결론

Python의 세트는 중복을 허용하지 않는 컬렉션으로, 다양한 활용이 가능합니다. 세트를 사용하면 중복 요소 제거, 빠른 멤버십 테스트, 데이터 비교 등 다양한 작업을 효율적으로 수행할 수 있습니다. 이번 포스트에서는 세트의 기본적인 사용법부터 고급 기능까지 알아보았습니다. 이를 통해 Python 프로그래밍에서 세트를 더욱 유용하게 활용할 수 있기를 바랍니다.

반응형