Programming/python

파이썬 집합 자료형 | Python set()

방황하는 데이터불도저 2023. 2. 8. 23:07

파이썬에서 사용되는 자료구조 중에서 집합(set)을 활용하는 방법을 정리한 글이다.

기본 규칙

!! 집합은 원소들끼리 겹치지 않는다 !! : 자료 내에 중복되지 않는 고유값만 알고싶을 때, 자주 쓰임.
!! 집합 자료구조는 순서를 가지지 않는다(Unordered) !!
: 순서가 중요한 자료에서는 쓰지 않는 것이 좋다!!

# 빈 집합 만드는 법
set1 = set()

# 리스트를 집합으로 만드는 법
set2 = set([1,2,3,4,5])
print(set2)
# Output : {1, 2, 3, 4, 5}

# 문자열을 집합으로 만드는 법
set3 = set("strings")
print(set3)
# Output : {'s', 't', 'n', 'r', 'i', 'g'}

# 집합을 리스트, 튜플로 만들어서 인덱싱할 수 있다.
# 그냥 set 자료구조에서는 인덱싱이 불가능하다
list1 = list(set2)
print(list1)
# Output : [1,2,3,4,5]

tuple1 = tuple(set3)
print(tuple1)
# Output : ('s', 't', 'n', 'r', 'i', 'g')

집합 자료형 다루기

set1 = set([1,2,3,4])

# 원소 1개 추가하기
set1.add(5)
set1
# Output : {1, 2, 3, 4, 5}

# 원소 여러개 한번에 추가하기
set1.update([6,7,8,9,10])
set1
# Output : {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

# 집합 내 원소 제거하기
set1.remove(5)
set1
# Output : {1, 2, 3, 4, 6, 7, 8, 9, 10}

집합 연산

set1 = set(['a', 'p', 'p', 'l', 'e'])
set2 = set(['a', 'i', 'r', 'p', 'l', 'a', 'n', 'e'])

# 합집합
set1|set2
set1.union(set2)
# Output : {'p', 'e', 'a', 'n', 'r', 'i', 'l'}


# 교집합
set1 & set2
set1.intersection(set2)
# Output : {'p', 'e', 'a', 'l'}


# 차집합
set1-set2
set1.difference(set2)
# Output : set()   <-- 모든 원소가 교집합에 포함될 때

set2-set1
set2.difference(set1)
# Output : {'i', 'r', 'n'}