파이썬 set() 생성 및 활용방법 5가지

파이썬 set() 내장 함수는 집합을 생성하는 데 사용되며, 이를 통해 중복을 허용하지 않는 데이터 저장 및 다양한 연산을 쉽게 처리할 수 있습니다. 파이썬에는 다양한 데이터 구조가 존재합니다. 그중에서 set집합을 나타내는 자료형으로, 수학에서 다루는 집합과 비슷한 개념입니다. 이번에는 set()의 사용법에 대해서 자세히 살펴보겠습니다.

파이썬 set()의 특징

set 자료형은 다음과 같은 주요 특징을 가지고 있습니다.

  • 중복을 허용하지 않음: 같은 값이 여러 개 있을 경우, 하나만 저장됩니다. 예를 들어, [1, 2, 2, 3]set로 변환하면 {1, 2, 3}이 됩니다.
  • 순서가 없음: 리스트와 달리 요소들이 저장되는 순서가 없기 때문에 인덱싱이나 슬라이싱이 불가능합니다.
  • 변경 가능함: set에 새로운 값을 추가하거나 기존 값을 삭제할 수 있습니다.

이러한 특징 덕분에 set는 고유한 값을 저장하거나, 빠른 검색 및 중복 제거 작업에서 유용하게 사용됩니다.

set 생성 방법

파이썬에서 set를 생성하는 방법은 두 가지입니다. 하나는 set() 함수를 사용하는 방법이고, 다른 하나는 중괄호 {}를 사용하는 방법입니다.

Python
set([1, 2, 3, 4, 5])
# or
{1, 2, 3, 4, 5}
그림 1. 파이썬 set 생성 방법 2가지

단, 빈 set를 생성할 때는 반드시 set() 함수를 사용해야 합니다. 중괄호 {}를 사용하면 set가 아닌 딕셔너리가 생성됩니다.

Python
type(set())
type({})
그림 2. 파이썬 set: 빈 set 생성시에는 set() 함수 사용할 것

set 활용 방법

set는 주로 중복 제거, 교집합, 합집합 등의 집합 연산을 처리할 때 사용됩니다. 각 연산은 파이썬에서 간단한 메서드나 연산자를 통해 쉽게 수행할 수 있습니다.

중복 제거

리스트나 다른 시퀀스 자료형에서 중복된 값을 제거할 때 set를 활용할 수 있습니다.

Python
my_list = [1, 2, 2, 3, 2, 3, 5, 4, 4, 5]
my_set = set(my_list)
print(my_set)

다음 그림과 같이 set를 사용해서 리스트의 중복된 요소를 손쉽게 제거할 수 있습니다.

그림 3. 파이썬 set: 리스트의 중복된 요소 제거

합집합 (Union)

두 개 이상의 집합을 하나로 합치는 연산입니다. 파이썬에서는 | 연산자 또는 union() 메서드를 사용해 합집합을 구할 수 있습니다.

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

result = set1 | set2
print(result)

result = set1.union(set2)
print(result)
그림 4. 파이썬 set: | 연산자 또는 union() 메서드로 합집합 구하기

교집합 (Intersection)

두 집합에서 공통으로 포함된 요소를 찾는 연산입니다. & 연산자 또는 intersection() 메서드를 사용합니다.

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

result = set1 & set2
print(result)

result = set1.intersection(set2)
print(result)
그림 5. 파이썬 set: & 연산자 또는 intersection() 메서드로 교집합 구하기

차집합 (Difference)

한 집합에서 다른 집합의 요소를 뺀 결과를 얻는 연산입니다. - 연산자 또는 difference() 메서드를 사용합니다.

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

result = set1 - set2
print(result)

result = set1.difference(set2)
print(result)
그림 6. 파이썬 set: – 연산자 또는 difference() 메서드로 차집합 구하기

대칭 차집합 (Symmetric Difference)

두 집합에서 공통되지 않는 요소들만을 포함하는 연산입니다. ^ 연산자 또는 symmetric_difference() 메서드를 사용합니다.

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

result = set1 ^ set2
print(result)

result = set1.symmetric_difference(set2)
print(result)
그림 7. 파이썬 set; ^ 연산자 또는 symmetric_difference() 메서드로 대칭차집합 구하기

주의사항

set는 순서가 없는 자료형이기 때문에 인덱싱이나 슬라이싱과 같은 리스트에서 사용하는 방법은 사용할 수 없습니다. 예를 들어, my_set[0]과 같은 방식으로 첫 번째 요소에 접근하려고 하면 오류가 발생합니다. set에서 요소를 순회하려면 for 루프를 사용해야 합니다.

Python
my_set = {1, 2, 3}
for element in my_set:
    print(element)

또한 set의 요소들은 변경 불가능한(immutable) 자료형이어야 합니다. 따라서 리스트딕셔너리와 같은 가변 객체를 set의 요소로 사용할 수 없습니다.

정리

파이썬 set()는 중복된 데이터를 관리하거나 집합 연산을 빠르고 쉽게 처리할 수 있는 유용한 도구입니다. 합집합, 교집합, 차집합 등 다양한 집합 연산을 지원하며, 특히 중복을 제거하거나 고유한 값을 찾을 때 강력한 성능을 제공합니다. set를 활용하여 더 효율적인 코드를 작성할 수 있도록 연습해 보세요.

참고자료

관련 포스트

Leave a Comment