파이썬은 다양한 자료형을 지원하며, 이 중에서도 집합(Set) 자료형은 중복된 값을 제거하고 유일한 값만을 저장할 수 있어 유용하게 사용됩니다. 이번 글에서는 파이썬의 집합 자료형에 대해 알아보겠습니다.
집합(Set)이란
집합이란 순서가 없고 중복이 없는 값들의 묶음(집합)을 나타내는 자료형입니다. 다른 자료형과 비교했을 때 중복된 값을 제거하고 유일한 값을 저장할 때 유용합니다. 집합은 중괄호({ })를 사용하며, 각 값들은 쉼표(,)로 구분합니다.
집합을 생성하는 방법
파이썬에서 집합을 생성하는 방법을 아래 예시코드를 보면서 알아보겠습니다.
1. 중괄호({ })를 이용한 방법
my_set = {1, 2, 3, 4, 5}
print(type(my_set)) # <class 'set'>
print(my_set) # {1, 2, 3, 4, 5}
2. set()을 이용한 방법
my_set = set([1, 2, 3, 4, 5])
print(my_set) # {1, 2, 3, 4, 5}
※ 주의
중괄호({ })를 이용하여 빈 set을 생성하려고 하면 Dictionary가 생성됩니다. 따라서 빈 set을 생성하기 위해서는 set()을 사용해야 합니다.
# 중괄호({ })를 이용하여 빈 set 생성하려고하면 dictionary가 생성됩니다.
my_set1 = {}
print(type(my_set1)) # <class 'dict'>
# 빈 set을 생성하려면 set()사용
my_set2 = set()
print(type(my_set2)) # <class 'set'>
집합의 특징
① 집합은 고유한 값을 가집니다.
집합은 고유한 값을 가지며 중복을 허용하지 않습니다.
my_set = {1, 2, 2, 2, 3, 3, 3, 4, 5, 5, 5}
# 중복된 값은 자동으로 제거됩니다.
print(my_set) # {1, 2, 3, 4, 5}
② 집합은 순서가 없습니다.
집합은 순서가 없기 때문에 인덱싱으로 접근할 수 없습니다.
my_set = {1, 2, 3, 4, 5}
# 두번째 요소 선택
my_set[1]
# Traceback (most recent call last):
# File ".\test.py", line 4, in <module>
# my_set[1]
# TypeError: 'set' object is not subscriptable
③ 변경이 가능합니다.
집합은 가변 자료형이기 때문에 변경이 가능합니다.
my_set = {1, 2, 3, 4, 5}
# set은 변경 가능한 자료형이기 때문에 값을 추가하거나 제거할 수 있다.
my_set.add(6)
print(my_set) # {1, 2, 3, 4, 5, 6}
my_set.remove(6)
print(my_set) # {1, 2, 3, 4, 5}
추가와 삭제
1. 요소 추가하기
- add()로 추가하기(요소 1개 추가)
my_set1 = {1, 2, 3}
my_set1.add(4)
print(my_set1) # {1, 2, 3, 4}
- update()로 추가하기(요소 1개 이상 추가)
my_set2 = {1, 2, 3}
my_set2.update([3, 4, 5])
print(my_set2) # {1, 2, 3, 4, 5}
2. 요소 삭제하기
- remove()로 삭제하기(특정 요소 제거)
my_set1 = {1, 2, 3, 4, 5}
my_set1.remove(5)
print(my_set1) # {1, 2, 3, 4}
- pop()로 삭제하기(임의의 요소 제거)
my_set2 = {1, 2, 3, 4, 5}
p = my_set2.pop()
print(my_set2) # {2, 3, 4, 5}
print(p) # 1
※ 주의
요소를 삭제할 때, 삭제하려는 요소가 존재하지 않을 경우 KeyError가 발생합니다.
my_set3 = {1, 2, 3, 4, 5}
# 6이라는 값을 가지는 요소를 삭제합니다.
my_set3.remove(6)
# Traceback (most recent call last):
# File ".\test.py", line 4, in <module>
# my_set3.remove(6)
# KeyError: 6
집합 연산
메소드 또는 기호를 사용하여 집합 연산을 할 수 있습니다. 아래 예시 코드를 보면서 알아보겠습니다.
1. 교집합
- intersection() 사용
my_set1 = {1, 2, 3, 4, 5}
my_set2 = {3, 4, 5, 6, 7}
intersection1 = my_set1.intersection(my_set2)
print(intersection1) # {3, 4, 5}
- `&` 기호 사용
my_set1 = {1, 2, 3, 4, 5}
my_set2 = {3, 4, 5, 6, 7}
intersection2 = my_set1 & my_set2
print(intersection2) # {3, 4, 5}
2. 합집합
- union() 사용
my_set1 = {1, 2, 3, 4, 5}
my_set2 = {3, 4, 5, 6, 7}
union1 = my_set1.union(my_set2)
print(union1) # {1, 2, 3, 4, 5, 6, 7}
- `|` 기호 사용
my_set1 = {1, 2, 3, 4, 5}
my_set2 = {3, 4, 5, 6, 7}
union2 = my_set1 | my_set2
print(union2) # {1, 2, 3, 4, 5, 6, 7}
3. 차집합
- difference() 사용
my_set1 = {1, 2, 3, 4, 5}
my_set2 = {3, 4, 5, 6, 7}
difference1 = my_set1.difference(my_set2)
print(difference1) # {1, 2}
- `-` 기호 사용
my_set1 = {1, 2, 3, 4, 5}
my_set2 = {3, 4, 5, 6, 7}
difference2 = my_set1 - my_set2
print(difference2) # {1, 2}
이번 글에서는 파이썬의 집합에 대해 알아보았습니다. 집합에서는 교집합, 합집합, 차집합 등 다양한 연산이 가능하며, 이를 위한 메소드들이 제공됩니다. 필요에 따라 적절한 메소드를 사용하면 되겠습니다.
함께 보면 좋은 글
[Python] 리스트(List) 자료형
파이썬은 다양한 자료형을 지원하며, 그중 리스트(List)는 자주 사용되는 자료형 중 하나입니다. 이번 글에서는 파이썬의 리스트에 대해 알아보겠습니다. 리스트(List)란? 리스트는 순서가 있는 값
dev-records.tistory.com
'Language > Python' 카테고리의 다른 글
[Python] 파이썬 3.10 새로운 기능 (0) | 2023.05.10 |
---|---|
[Python] 딕셔너리(Dictionary) 자료형 (0) | 2023.05.08 |
[Python] 튜플(Tuple) 자료형 (0) | 2023.05.01 |
[Python] 리스트(List) 자료형 (0) | 2023.04.30 |
[Python] append()와 extend(), insert() (0) | 2023.04.29 |
댓글