[Python – 기초 강좌] 10. 자료구조 (Data Structure): Set(세트) 편

앞선 포스팅에서 자료구조의 ListTuple에 대해 소개했습니다.

Python의 다양한 자료 구조 중에서도 특히 주목할 만한 것이 바로 Set(세트)입니다.

리스트와 Tuple의 특성을 이해했다면, Set에 대해 알아보는 것은 Python을 더 깊게 이해하는 데 큰 도움이 될 것입니다.

이번 포스팅에서는 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])

참고 문헌

Leave a Comment