logo

[Python] 세트

세트(Set)는 Python에서 사용할 수 있는 다양한 컬렉션 타입 중 하나입니다. 아래에서는 세트의 기본 개념에 대해 상세히 설명하겠습니다.

 

세트의 정의와 특징

세트는 수학에서의 집합에 해당하는 개념으로, 순서가 지정되지 않은 컬렉션입니다. 이는 세트 내의 각 요소가 고유하며, 하나의 세트에 동일한 요소가 두 번 이상 포함될 수 없다는 것을 의미합니다. 또한, 세트는 요소의 순서를 보장하지 않기 때문에, 요소의 순서에 의존하는 작업에는 적합하지 않습니다.

 

세트의 생성 방법

세트를 생성하는 방법에는 주로 두 가지가 있습니다.

중괄호() 사용:

중괄호를 사용하여 세트를 직접 생성할 수 있습니다. 이 때, 각 요소는 쉼표로 구분됩니다.

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

set() 함수 활용:

set() 함수를 사용하여 리스트나 튜플과 같은 다른 컬렉션 타입에서 세트를 생성할 수 있습니다. 이 방법을 사용할 시, 중복된 요소는 자동으로 제거됩니다.

my_list = [1, 2, 2, 3, 4, 5, 5]
my_set = set(my_list)
print(my_set)  # Output: {1, 2, 3, 4, 5}
 

불변 객체만 세트의 요소가 될 수 있다는 특성

세트의 특징 중 하나는 세트의 요소로 불변(immutable) 객체만을 포함할 수 있다는 것입니다. 이는 숫자, 문자열, 튜플과 같은 불변의 데이터 타입은 세트의 요소가 될 수 있지만, 리스트나 딕셔너리와 같은 가변(mutable) 객체는 세트의 요소로 사용할 수 없음을 의미합니다.

 

세트의 요소가 유일함 (중복 요소 자동 제거)

앞서 언급했듯이, 세트는 각 요소가 유일해야 한다는 특징을 가지고 있습니다. 세트를 생성할 때 중복된 요소가 포함되어 있다면, Python은 자동으로 중복된 요소를 제거하여 세트를 생성합니다. 이러한 세트의 특성은 중복을 허용하지 않는 데이터를 관리할 때 매우 유용합니다.

duplicated_elements = {1, 2, 2, 3, 4, 4, 5}
print(duplicated_elements)  # Output: {1, 2, 3, 4, 5}

이상으로 세트의 기본 개념에 대한 설명을 마칩니다. 세트는 Python에서 유용하게 사용되는 데이터 구조 중 하나로, 알고 있으면 여러 프로그래밍 문제를 해결하는 데 도움이 됩니다.


세트(Set) 연산

세트(Set)는 Python에서 고유한 요소들의 모음을 다룰 때 사용되는 데이터 구조입니다. 이러한 세트는 수학에서의 집합 개념과 유사하게 동작합니다. 세트는 수정 가능하며, 순서가 없고, 중복된 요소를 포함하지 않습니다. 이러한 특성으로 인해 세트는 다양한 집합 연산을 수행하는데 유용하게 쓰입니다.

 

세트 간의 합집합 연산

두 세트의 합집합은 두 세트에 속하는 모든 고유한 요소들의 집합입니다. Python에서는 | 연산자 또는 union() 메소드를 사용하여 합집합을 구할 수 있습니다.

a = {1, 2, 3}
b = {3, 4, 5}

# 연산자를 사용한 합집합
c = a | b
print(c)  # {1, 2, 3, 4, 5}

# 메소드를 사용한 합집합
d = a.union(b)
print(d)  # {1, 2, 3, 4, 5}
 

세트 간의 교집합 연산

두 세트의 교집합은 두 세트 모두에 포함되는 요소들의 집합입니다. Python에서는 & 연산자 또는 intersection() 메소드를 사용하여 교집합을 구할 수 있습니다.

a = {1, 2, 3}
b = {3, 4, 5}

# 연산자를 사용한 교집합
c = a & b
print(c)  # {3}

# 메소드를 사용한 교집합
d = a.intersection(b)
print(d)  # {3}
 

세트 간의 차집합 연산

한 세트에서 다른 세트에 속한 요소들을 제거한 결과를 차집합이라 합니다. Python에서는 - 연산자 또는 difference() 메소드를 사용하여 차집합을 구할 수 있습니다.

a = {1, 2, 3}
b = {3, 4, 5}

# 연산자를 사용한 차집합
c = a - b
print(c)  # {1, 2}

# 메소드를 사용한 차집합
d = a.difference(b)
print(d)  # {1, 2}
 

세트 간의 대칭 차집합 연산

대칭 차집합은 두 세트 중 하나에는 포함되지만 두 세트 모두에는 포함되지 않는 요소들의 집합입니다. Python에서는 ^ 연산자 또는 symmetric_difference() 메소드를 사용하여 대칭 차집합을 구할 수 있습니다.

a = {1, 2, 3}
b = {3, 4, 5}

# 연산자를 사용한 대칭 차집합
c = a ^ b
print(c)  # {1, 2, 4, 5}

# 메소드를 사용한 대칭 차집합
d = a.symmetric_difference(b)
print(d)  # {1, 2, 4, 5}
 

서로소 판정

두 세트가 서로소일 때, 즉 두 세트의 교집합이 빈 세트일 때 참을 반환합니다. Python에서는 isdisjoint() 메소드를 사용하여 두 세트가 서로소인지 확인할 수 있습니다.

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

# 서로소 판정
is_disjoint = a.isdisjoint(b)
print(is_disjoint)  # True
 

세트 메소드

  • add(element): 세트에 요소를 추가합니다.
  • update([element1, element2, ...]): 세트에 여러 요소를 추가합니다.
  • remove(element): 세트에서 요소를 제거합니다. 요소가 없으면 예외가 발생합니다.
  • discard(element): 세트에서 요소를 제거합니다. 요소가 없어도 예외가 발생하지 않습니다.
  • pop(): 세트에서 임의의 요소를 제거하고 그 요소를 반환합니다. 세트가 비어있으면 예외가 발생합니다.
  • clear(): 세트의 모든 요소를 제거합니다.

세트는 Python에서 유용하게 사용되는 데이터 구조 중 하나로, 다양한 집합 연산을 통해 데이터 처리 작업을 효율적으로 수행할 수 있습니다.


세트(Set)는 Python에서 고유한 요소만을 저장하는 데 사용되는 데이터 구조로, 중복 없이 데이터를 관리할 수 있습니다. 다음은 세트를 활용하는 몇 가지 방법입니다.

 

세트를 활용한 고유 값 처리

세트는 중복된 값을 자동으로 제거하기 때문에 데이터에서 고유한 값만을 추출하고 싶을 때 매우 유용합니다. 예를 들어, 여러 문서나 데이터베이스에서 이름을 모았지만 각각의 고유한 이름만을 알고 싶다면, 이 이름들을 세트에 추가함으로써 쉽게 고유한 이름만을 얻을 수 있습니다.

names = ["John", "Ana", "Mark", "Ana", "John"]
unique_names = set(names)
print(unique_names)
# 결과: {'Mark', 'Ana', 'John'}

위 코드에서 볼 수 있듯이 "Ana""John"이 중복되어 있지만, 세트에 추가하면서 고유한 값만 남게 됩니다.

 

데이터 간의 관계 분석에 활용

세트 연산을 통해 두 데이터 집합간의 관계를 분석할 수 있습니다. 예를 들어, 두 세트가 있을 때 교집합, 합집합, 차집합 등을 구할 수 있습니다. 이는 데이터 간의 공통 요소를 찾거나, 특정 데이터에만 존재하는 요소를 확인할 때 유용합니다.

set_a = {1, 2, 3, 4, 5}
set_b = {4, 5, 6, 7, 8}

# 교집합: 두 세트 모두에 있는 요소
print(set_a & set_b)
# 결과: {4, 5}

# 합집합: 두 세트의 모든 요소, 중복 제거
print(set_a | set_b)
# 결과: {1, 2, 3, 4, 5, 6, 7, 8}

# 차집합: 첫 번째 세트에는 있지만 두 번째 세트에는 없는 요소
print(set_a - set_b)
# 결과: {1, 2, 3}
 

리스트, 튜플 등 다른 컬렉션에서 중복 요소 제거에 활용

리스트나 튜플 같은 다른 컬렉션 타입에서 중복된 요소를 제거하고자 할 때 세트 변환은 간단하면서도 효과적인 방법입니다. 변환 과정에서 자동으로 중복된 요소들이 제거되기 때문입니다.

# 리스트에서 중복 요소 제거
list_with_duplicates = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
unique_list = list(set(list_with_duplicates))
print(unique_list)
# 결과: [1, 2, 3, 4]

# 순서를 유지하며 중복 요소 제거하고자 한다면 다음과 같이 함
unique_list_ordered = sorted(set(list_with_duplicates), key=list_with_duplicates.index)
print(unique_list_ordered)
# 결과: [1, 2, 3, 4]

위의 예시들처럼 세트는 Python에서 데이터 처리 시 고유한 값의 관리, 데이터 간의 관계 분석, 그리고 중복 제거 등의 작업을 단순하지만 효과적으로 수행할 수 있는 강력한 도구입니다.

Previous
딕셔너리