파이썬이 제공하는 집합을 표현하는 자료형이다. set 를 사용하면 합집합, 교집합, 차집합 등의 연산이 가능하다.
nations = {'korea', 'usa', 'japan', 'france', 'uk', 'korea'}
print(nations) # {'korea', 'japan', 'uk', 'usa', 'france'}
a = set('strawberry')
print(a) # {'w', 't', 's', 'a', 'e', 'b', 'y', 'r'}
b = set(range(5))
print(b) # {0, 1, 2, 3, 4}
c = set([1,2,3,4,5,6,1,2,3,5,7,8,9])
print(c) # {1, 2, 3, 4, 5, 6, 7, 8, 9}
d = frozenset(range(10))
print(d) # frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
set 의 특징
# 예시
a = frozenset({frozenset({1, 2}), frozenset({3, 4})})
nations = {'korea', 'usa', 'japan', 'france', 'uk', 'korea'}
print(nations) # {'korea', 'japan', 'uk', 'usa', 'france'}
print('korea' in nations) # True
print('japan' not in nations) # False
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
# 합집합
print(a | b)
print(set.union(a, b)) # {1, 2, 3, 4, 5, 6}
# 교집합
print(a & b)
print(set.intersection(a, b)) # {3, 4}
# 차집합
print(a - b)
print(set.difference(a, b)) # {1, 2}
# 대칭차집합 (합집합 - 교집합)
print(a ^ b)
print(set.symmetric_difference(a, b)) # {1, 2, 5, 6}
합집합 후 할당
a = {1, 2, 3, 4}
a |= {5}
print(a) # {1, 2, 3, 4, 5}
a = {1, 2, 3, 4}
a.update({5})
print(a) # {1, 2, 3, 4, 5}
교집합 후 할당
a = {1, 2, 3, 4}
a &= {0, 1, 2, 3, 4, 5}
print(a) # {1, 2, 3, 4}
a = {1, 2, 3, 4}
a.intersection_update({0, 1, 2, 3, 4, 5})
print(a) # {1, 2, 3, 4}
차집합 후 할당
a = {1, 2, 3, 4}
a -= {3}
print(a) # {1, 2, 4}
a = {1, 2, 3, 4}
a.difference_update({3})
print(a) # {1, 2, 4}
대칭차집합 후 할당
a = {1, 2, 3, 4}
a ^= {3, 4, 5, 6}
print(a) # {1, 2, 5, 6}
a = {1, 2, 3, 4}
a.symmetric_difference_update({3, 4, 5, 6})
print(a) # {1, 2, 5, 6}
a = {1, 2, 3, 4}
# 현재세트가 다른세트의 부분집합인지 확인
print(a <= {1, 2, 3, 4}) # True
print(a.issubset({1, 2, 3, 4, 5})) # True
# 현재세트가 다른세트의 진부분집합인지 확인
print(a < {1, 2, 3, 4, 5}) # True
print(a < {1, 2, 3, 4}) # False
# 현재세트가 다른세트의 상위집합인지 확인
print(a >= {1, 2, 3, 4}) # True
print(a.issuperset({1, 2, 3, 4})) # True
# 현재세트가 다른세트의 진상위집합인지 확인
print(a > {1, 2, 3, 4}) # False
print(a > {1, 2, 3}) # True
# 세트가 서로 같은지 확인
print(a == {1, 2, 3, 4}) # True
print(a == {4, 3, 2, 1}) # True
# 세트가 서로 다른지 확인
print(a != {1, 2, 3}) # True
print(a != {4, 3, 2, 1}) # False
# 겹치는 요소가 있는지 확인
print(a.isdisjoint({5, 6, 7, 8})) # True
print(a.isdisjoint({3, 4, 5, 6})) # False
a = {1, 2, 3, 4}
# 세트에 요소 추가하기
a.add(5)
print(a) # {1, 2, 3, 4, 5}
# 세트에서 요소 삭제, 요소가 없으면 에러 발생
a.remove(3)
print(a) # {1, 2, 4, 5}
# 세트에서 특정 요소를 삭제하고 없으면 pass
a.discard(2)
print(a) # {1, 4, 5}
# 세트에서 임의의 요소 삭제
a.pop()
print(a) # {4, 5}
# 세트의 모든 요소 삭제
a.clear()
print(a) # set()
a = {1, 2, 3, 4}
# 세트의 요소 개수(길이) 구하기
print(len(a))
a = {1, 2, 3, 4}
b = a.copy()
print(a is b) # False
print(a == b) # True
b.add(5)
print(b) # {1, 2, 3, 4, 5}
print(a) # {1, 2, 3, 4}
a = {1, 2, 3, 4}
for i in a:
print(i, end=' ')
# 1 2 3 4
a = {i for i in 'apple'}
print(a) # {'a', 'l', 'e', 'p'}
b = {i for i in 'pineapple' if i not in 'apl'} # a, p, l 이 아닌 경우에만 세트로 생성
print(b)