3.0 KiB
3.0 KiB
Set
파이썬의 set 자료형은 수학에서의 집합 개념을 그대로 가져온 자료형입니다. 즉, 중복되는 요소를 허용하지 않고 순서가 없는 자료형입니다.
-
set
세트의 아이템은 중복될 수 없으며, 순서도 없습니다. 중괄호(
{,})를 사용해서 표현합니다.
특징
- 중복 허용 X: 같은 값을 여러 번 넣어도 하나의 값만 유지됩니다.
- 순서 없음: 요소들이 특정 순서로 저장되지 않습니다. 따라서 인덱싱을 통해 요소에 접근할 수 없습니다.
- 변경 가능: 요소를 추가하거나 삭제할 수 있습니다.
set 자료형 생성하기
a = {'apple', 'orange', 'banana'}
b = set('apple', 'orange', 'banana')
empty_set = set()
my_set = {1, 2, 3, 2} # 중복된 2는 하나만 포함
불변 세트를 만들려면 frozenset()를 사용합니다. Immutable 세트는 값을 수정할 수 없습니다.
c = frozenset('apple', 'orange', 'banana')
리스트와 달리 순서가 없으므로, my_set[0]과 같이 대괄호 안에 인덱스를 사용해서 요소에 접근할 수 없습니다.
세트 안에 중첩된 세트를 넣을 수도 없습니다.
아이템의 추가 / 삭제
add() 메서드를 사용하여 요소를 추가합니다.
my_set.add(4)
remove() 메서드를 사용하여 요소를 삭제합니다. 없는 요소를 삭제하려고 하면 KeyError가 발생합니다. discard() 메서드는 요소가 없어도 에러 없이 무시합니다.
my_set.remove(2)
my_set.discard(5) # 5가 없어도 에러 발생하지 않음
아이템 포함 여부
세트 안에 어떤 값이 있는지 확인하려면 in을 사용합니다.
a = {'apple', 'orange', 'banana'}
'orange' in a # True
집합 연산
논리 연산자 또는 set의 메서드를 사용해서 집합 연산을 할 수 있습니다.
a = {1, 2, 3}
b = {3, 4, 5, 6}
a | b # 합집합 {1,2,3,4,5,6}
set.union(a, b)
a & b # 교집합 {3}
set.intersection(a, b)
a - b # 차집합 {1,2}
set.difference(a, b)
a ^ b # 대칭 차집합
set.symmetric_difference(a, b)
-
set.union(),|: 합집합 -
set.intersection(),&: 교집합 -
set.difference(),-: 차집합 -
set.symmetric_difference() -
update(세트),|= -
intersection_update(세트),&= -
difference_update(세트),-= -
symmetric_update(세트),^=
비교 연산자를 사용해서 포함 관계를 확인할 수 있습니다.
{1,2,3} <= {1,2,3,4,5} # 다른 집합의 부분집합인지 여부
{1,2,3}.issubset({1,2,3,4,5})
{1,2,3} < {1,2,3,4,5} # 다른 집합의 진부분집합인지 여부
{1,2,3} >= {1,2,3,4,5} # 다른 집합의 상위집합인지 여부
{1,2,3}.issuperset({1,2,3,4,5})
{1,2,3} > {1,2,3,4,5} # 다른 집합의 진상위집합인지 여부
{1,2,3} == {1,2,3,4,5} # 서로 같은지 여부
{1,2,3} != {1,2,3,4,5}
{1,2,3}.isdisjoint({1,2,3,4,5}) # 서로 겹치는 요소가 없으면 True가 반환됩니다.