본문 바로가기

프로그래밍 언어/파이썬

파이썬(Python) 집합(set) 기본 개념, 고급 연산, 실전 예제

파이썬(Python) 집합(set) 기본 개념, 고급 연산, 실전 예제

파이썬의 집합(set)은 중복 없는 데이터 컬렉션을 관리하고 다양한 고급 연산을 수행할 수 있는 강력한 자료구조입니다. 이 글에서는 집합의 기본 개념부터 고급 연산까지, 다양한 실전 예제를 통해 파이썬 집합을 효과적으로 활용하는 방법을 알아보겠습니다.

 

 

 

1. 집합의 기본 개념

집합은 중복되지 않는 요소들의 모음으로, 수학에서의 집합과 유사합니다. 파이썬의 집합은 해시 테이블을 기반으로 구현되어 있어 요소의 순서가 중요하지 않으며, 빠른 검색, 추가, 삭제 연산이 가능합니다.


# 집합 생성 예제
fruits = {"apple", "banana", "cherry"}
print(fruits)  # 출력: {'apple', 'banana', 'cherry'}
            

 

 

2. 집합 생성 및 요소 추가

집합은 중괄호를 사용하여 생성하거나 set() 함수를 이용하여 생성할 수 있습니다. 요소를 추가할 때는 add() 메서드를 사용합니다.


# set() 함수로 집합 생성
vegetables = set(["carrot", "potato", "cucumber"])
print(vegetables)  # 출력: {'carrot', 'potato', 'cucumber'}

# 요소 추가
vegetables.add("tomato")
print(vegetables)  # 출력: {'carrot', 'potato', 'cucumber', 'tomato'}
            

 

 

3. 집합의 주요 연산

집합은 다양한 연산을 지원합니다. 대표적인 연산으로는 합집합, 교집합, 차집합, 대칭차집합이 있습니다. 이러한 연산은 각각 union(), intersection(), difference(), symmetric_difference() 메서드를 통해 수행할 수 있습니다.


set1 = {"apple", "banana", "cherry"}
set2 = {"banana", "cherry", "date"}

# 합집합
print(set1.union(set2))  # 출력: {'apple', 'banana', 'cherry', 'date'}

# 교집합
print(set1.intersection(set2))  # 출력: {'banana', 'cherry'}

# 차집합
print(set1.difference(set2))  # 출력: {'apple'}

# 대칭차집합
print(set1.symmetric_difference(set2))  # 출력: {'apple', 'date'}
            

 

 

 

 

4. 집합의 고급 연산

집합은 고급 연산으로 부분집합, 상위집합, 디스조인트(교집합이 없는 두 집합) 여부를 판단할 수 있습니다. 이러한 연산은 issubset(), issuperset(), isdisjoint() 메서드를 통해 수행합니다.


small_set = {"apple", "banana"}
large_set = {"apple", "banana", "cherry", "date"}

# 부분집합 여부
print(small_set.issubset(large_set))  # 출력: True

# 상위집합 여부
print(large_set.issuperset(small_set))  # 출력: True

# 디스조인트 여부
print(small_set.isdisjoint({"kiwi", "melon"}))  # 출력: True
            

 

 

5. 실전 예제

다음은 파이썬 집합을 활용한 실전 예제입니다. 집합을 이용하여 두 리스트 간의 중복 요소를 제거하고, 고유한 요소들로 새로운 리스트를 생성해 보겠습니다.


list1 = [1, 2, 3, 4, 5]
list2 = [4, 5, 6, 7, 8]

# 리스트를 집합으로 변환하여 중복 요소 제거
set1 = set(list1)
set2 = set(list2)

# 합집합을 구하여 고유한 요소들로 새로운 리스트 생성
unique_list = list(set1.union(set2))
print(unique_list)  # 출력: [1, 2, 3, 4, 5, 6, 7, 8]
            

 

 

6. 결론

파이썬의 집합은 중복 없는 데이터 관리와 다양한 고급 연산을 제공하여 효율적인 데이터 처리를 가능하게 합니다. 집합의 기본 개념부터 고급 연산까지 익히고, 이를 실제 코드에 적용하면 보다 효율적이고 가독성 높은 프로그램을 작성할 수 있습니다. 이 글에서 소개한 내용을 바탕으로 파이썬 집합을 활용해 보세요.