set 변수는 가변(Mutable) 자료형 중 하나이며, 중복이 허용되지 않는
값들의 집합을 나타내는 자료형입니다.
set의 요소는 불변(Immutable) 자료형만 포함할 수 있습니다.
set는 Sequence 자료형이 아니므로, 인덱싱(Indexing)과 슬라이싱(Slicing)이 불가능합니다.
💡 Sequence는 여러 개의 데이터들이 연속적으로 이루어진 자료형이며 str, list, tuple이 해당됩니다. Immutable은 데이터를 변경할 수 없는 자료형이며 tuple, string 등이 해당됩니다.
다음과 같이 set()
혹은 {}
를 이용하여 생성할 수 있습니다.
a = set()
print(type(a)) # <class 'set'>
a = {1,2}
print(type(a)) # <class 'set'>
💡 중괄호({})에 아무 값도 들어있지 않다면, dict로 인식하게 됩니다.
set()을 사용하면 코드를 봤을 때 {}보다는 이해하기 쉬우며,
set()보다 {}를 사용하면 성능 면에서 이점이 있습니다.
문자열을 전달 시 두 방법의 결과가 상이하므로, 주의하며 사용합니다.
print(set("Hello")) # {'l', 'H', 'e', 'o'}
print({"Hello"}) # {'Hello'}
set은 교집합, 합집합, 차집합을 구할 때 강점이 있습니다.
교집합은 &
으로 사용하거나 intersection
함수를 사용하면 구할 수 있습니다.
a = set([1,2,3,4,5])
b = set([4,5,6,7,8])
print(a & b) # {4, 5}
print(a.intersection(b))# {4, 5}
합집합은 |
으로 사용하거나 union
함수를 사용하면 구할 수 있습니다.
a = set([1,2,3,4,5])
b = set([4,5,6,7,8])
print(a | b) # {1, 2, 3, 4, 5, 6, 7, 8}
print(a.union(b)) # {1, 2, 3, 4, 5, 6, 7, 8}
차집합은 -
으로 사용하거나 difference
함수를 사용하면 구할 수 있습니다.
a = set([1,2,3,4,5])
b = set([4,5,6,7,8])
print(a - b) # {1, 2, 3}
print(b - a) # {8, 6, 7}
print(a.difference(b)) # {1, 2, 3}
print(b.difference(a)) # {8, 6, 7}
add
를 사용하면 1개의 요소를 set에 추가할 수 있습니다.
a = set([1,2,3,5])
a.add(4)
print(a) # {1, 2, 3, 4, 5}
update
를 사용하면 set 혹은 여러 개의 요소를 set에 추가할 수 있습니다.
a = set([1,2,3,5])
b = [4,5,6,7]
a.update(b)
print(a) # {1, 2, 3, 4, 5, 6, 7}
remove
를 사용하면 특정 요소를 삭제할 수 있습니다.
a = set([1,2,3,5])
a.remove(3)
print(a) # {1, 2, 5}