파이썬의 “집합(set)” 은 중복을 허용하지 않고, 순서가 없는 자료형입니다. 수학에서의 집합과 동일한 개념으로, 데이터를 빠르게 검색하거나 중복 제거, 집합 연산(합집합, 교집합 등)을 수행할 때 유용합니다.
1. 집합 생성
# 중괄호 사용
set1 = {1, 2, 3, 4, 5}
print(set1)
# set() 함수 사용
set2 = set([1, 2, 3, 2, 1])
print(set2)
# 빈 집합
empty_set = set() # 빈 집합은 반드시 set() 함수로 생성
print(empty_set)
결과:
{1, 2, 3, 4, 5}
{1, 2, 3}
set()
집합은 중괄호 {}를 사용하거나 set() 함수를 통해 생성할 수 있으며, 중복된 값은 자동으로 제거됩니다. 빈 집합을 생성하려면 반드시 set()을 사용해야 하며, {}는 빈 딕셔너리로 인식됩니다.
2. 집합에 값 추가와 제거
my_set = {1, 2, 3}
my_set.add(4) # 값 추가
print(my_set)
my_set.remove(2) # 값 제거
print(my_set)
# 없는 값 제거 시 오류 발생
# my_set.remove(5) # KeyError 발생
my_set.discard(5) # 없는 값 제거 시 오류 발생하지 않음
print(my_set)
removed_value = my_set.pop() # 임의의 값 제거
print(removed_value) # 제거된 값
print(my_set) # 남은 집합
결과:
{1, 2, 3, 4}
{1, 3, 4}
{1, 3, 4}
1
{3, 4}
add 메서드는 집합에 값을 추가하며, 중복된 값은 추가되지 않습니다. remove는 특정 값을 제거하며, 값이 없으면 오류를 발생시킵니다. 반면, discard는 값이 없더라도 오류 없이 실행됩니다. pop은 집합에서 임의의 값을 제거하고 반환합니다.
3. 집합의 집합 연산
set1 = {1, 2, 3}
set2 = {3, 4, 5}
print(set1.union(set2)) # 합집합
print(set1 | set2) # 합집합
print(set1.intersection(set2)) # 교집합
print(set1 & set2) # 교집합
print(set1.difference(set2)) # 차집합
print(set1 - set2) # 차집합
print(set1.symmetric_difference(set2)) # 대칭 차집합
print(set1 ^ set2) # 대칭 차집합
결과:
{1, 2, 3, 4, 5}
{1, 2, 3, 4, 5}
{3}
{3}
{1, 2}
{1, 2}
{1, 2, 4, 5}
{1, 2, 4, 5}
집합 연산에서는 union 또는 | 연산자로 합집합을 구하고, intersection 또는 & 연산자로 교집합을 구할 수 있습니다. difference 또는 -는 차집합을 반환하며, symmetric_difference 또는 ^는 두 집합 간 공통되지 않은 요소를 반환합니다.
4. 집합 비교
set1 = {1, 2, 3}
set2 = {1, 2}
print(set2.issubset(set1)) # set2가 set1의 부분 집합인가?
print(set1.issuperset(set2)) # set1이 set2의 상위 집합인가?
set3 = {4, 5}
print(set1.isdisjoint(set3)) # set1과 set3이 서로소인가?
결과:
True
True
True
issubset은 하나의 집합이 다른 집합의 부분 집합인지 확인하고, issuperset은 반대로 상위 집합인지 확인합니다. isdisjoint는 두 집합이 공통된 요소가 없는지 확인합니다.
5. 집합과 리스트 변환
my_list = [1, 2, 2, 3, 4]
my_set = set(my_list) # 리스트를 집합으로 변환 (중복 제거)
print(my_set)
my_list = list(my_set) # 집합을 리스트로 변환
print(my_list)
결과:
{1, 2, 3, 4}
[1, 2, 3, 4]
리스트를 집합으로 변환하면 중복된 값이 제거됩니다. 집합을 다시 리스트로 변환하면 순서는 보장되지 않지만, 중복 없는 리스트를 얻을 수 있습니다.
6. 집합 활용 예제
중복 제거
data = [1, 2, 2, 3, 4, 4, 5]
unique_data = list(set(data))
print(unique_data)
결과:
[1, 2, 3, 4, 5]
리스트에서 중복된 값을 제거하려면 집합으로 변환한 후 다시 리스트로 변환합니다.
공통 요소 찾기
list1 = [1, 2, 3, 4]
list2 = [3, 4, 5, 6]
common = set(list1) & set(list2) # 리스트를 집합으로 변환 후 교집합 구하기
print(common)
결과:
{3, 4}
리스트를 집합으로 변환하고 교집합 연산(&)을 수행하여 공통 요소를 찾습니다.
집합은 데이터 정리와 수학적 집합 연산을 효율적으로 처리할 때 매우 유용한 자료형입니다.
'파이썬 Python' 카테고리의 다른 글
파이썬 Python 정수(int) 함수 사용법 (0) | 2024.11.30 |
---|---|
파이썬 Python 실수(float) 사용하는 방법 (0) | 2024.11.30 |
파이썬 Python 문자열 사용법 (1) | 2024.11.28 |
파이썬 정수(int) 함수 사용법 (1) | 2024.11.28 |
파이썬 Python 튜플(Tuple) 사용법 (0) | 2024.11.27 |
파이썬(Python) JSON 처리 (0) | 2024.11.26 |
파이썬 Python 날짜와 시간 다루기 (0) | 2024.11.26 |
파이썬 Python 파일 경로 다루기 (0) | 2024.11.23 |