앞선 포스팅에서 자료구조의 List와 Tuple에 대해 소개했습니다.
Python의 다양한 자료 구조 중에서도 특히 주목할 만한 것이 바로 Set(세트)입니다.
리스트와 Tuple의 특성을 이해했다면, Set에 대해 알아보는 것은 Python을 더 깊게 이해하는 데 큰 도움이 될 것입니다.
이번 포스팅에서는 Set의 정의부터 사용 방법, 그리고 유용한 연산에 이르기까지, Python에서 Set를 어떻게 활용할 수 있는지 자세히 살펴보겠습니다.

Python에서 Set(세트)란?
Set(세트)는 Python의 기본 자료 구조 중 하나로, 유일한 요소들의 집합입니다.
즉, Set 안에서는 같은 요소가 두 번 이상 나타날 수 없습니다.
이러한 성질 때문에 Set는 데이터 중복을 제거하는 데 자주 사용됩니다.
Set는 수학의 집합 개념과 매우 유사하며, 이로 인해 교집합, 합집합, 차집합과 같은 집합 연산을 쉽게 수행할 수 있습니다.
Set의 요소로는 불변 타입(immutable type)만 올 수 있으며, 가변 타입(mutable type)인 List나 Dictionary는 Set의 요소가 될 수 없습니다.
Set 사용 방법
생성
Set를 생성하기 위해서는 중괄호 {}를 사용하거나, set() 함수를 호출할 수 있습니다.
중복된 요소는 자동으로 제거됩니다.
예제
# create set
my_set = {1, 2, 3, 4, 5}
print(my_set)
# create set with set function
my_set2 = set([1, 2, 2, 3, 4])
print(my_set2)결과
{1, 2, 3, 4, 5}
{1, 2, 3, 4}접근
Set는 순서가 없기 때문에, 인덱스를 사용하여 직접 접근할 수 없습니다.
하지만 Set를 순회(Iterator)하거나 in 키워드를 사용하여 요소가 Set 내에 존재하는지 확인할 수 있습니다.
예제
# itorate over set
for item in my_set:
    print(item)
# check if item exists
print(2 in my_set)결과
1 2 3 4 5 True
추가/제거
세트는 요소를 추가하거나 제거할 수 있으나, 세트 내의 개별 요소를 변경할 수는 없습니다.
이는 세트의 요소가 Hash(해시)가 가능해야 하기 때문입니다.
예제
# add item to set my_set.add(6) print(my_set) # remove item from set my_set.remove(4) print(my_set)
결과
{1, 2, 3, 4, 5, 6}
{1, 2, 3, 5, 6}연산
세트는 수학적 집합 연산을 지원합니다.
예를 들어, 합집합 (| 혹은 union(set1, set2)), 교집합(& 혹은 intersection(set1, set2)), 차집합(- 혹은 difference(set1, set2)) 등의 연산을 각 키워드를 통해 할 수 있습니다.
예제
# set operations
set1 = {1, 2, 3}
set2 = {3, 4, 5}
# union
print(set1 | set2)
# intersection
print(set1 & set2)
# difference
print(set1 - set2)결과
{1, 2, 3, 4, 5}
{3}
{1, 2}그 외 유용한 Set(세트) 내장 함수들
앞서 소개한 함수들 외의 몇 가지 유용한 내장 함수들을 소개합니다.
- discard(element):
- Set에서 특정 요소를 제거합니다.
 - 이 메소드는 
remove()와 유사하지만, Set에 없는 요소를 제거해도 에러가 발생하지 않습니다. - 예제 코드: 
my_set.discard(99) 
 - pop():
- 하나의 요소를 무작위로 제거하고 해당 요소를 반환합니다.
 - 예제 코드: 
my_set.pop() 
 - clear():
- 모든 요소를 제거합니다.
 - 예제 코드: 
my_set.clear() 
 - update(set1, set2):
- 예제 코드: 
my_set.update([7,8]) 
 - 예제 코드: 
 
참고 문헌
- “Think Python: How to Think Like a Computer Scientist”
 - My Git Repository (devitworld-python-basic) – 7_set.ipynb
 










