set과 frozenset 모두 사용 가능한 operation
len(s)
set의 크기를 반환
x in s
set s에 x가 존재하면 True 반환
x not in s
set s에 x가 존재하지 않으면 True 반환
1 not in {1, 2, 3}
# -> False
isdisjoint(other)
set이 other과 교집합이 없을 경우 True를 반환
{1, 2, 3}.isdisjoint({4, 5, 6})
# -> True
issubset(other)
set <= other
set의 모든 element가 other에 포함되면 True 리턴
{1, 2, 3}.issubset({1, 2, 3})
# -> True
{1, 2, 3} <= {1, 2, 3}
# -> True
set < other
set이 other의 진부분집합이면 True 리턴
{1, 2, 3} < {4, 5, 6}
# -> False
issuperset(other)
set >= other
other의 모든 element가 set에 포함되는지 검사합니다.
{1, 2, 3}.issuperset({1, 2, 3})
# -> True
{1, 2, 3} >= {1, 2, 3}
# -> True
set > other
set이 other의 진상위집합이면 True 리턴
{1, 2, 3} > {1, 2, 3}
# -> False
union(*others)
set | other | ...
set과 모든 others에 있는 element들로 구성된 새 set을 리턴
{1, 2, 3}.union({3, 4})
# -> {1, 2, 3, 4}
{1, 2, 3} | {3, 4} | {4, 5, 6}
# -> {1, 2, 3, 4, 5, 6}
intersection(*others)
set & other & ...
set과 모든 others의 공통 element들로 구성된 새 set을 리턴
{1, 2, 3}.intersection({3, 4})
# -> {3}
{1, 2, 3} & {1, 3} & {1, 4}
# -> {1}
difference(*others)
set - other - ...
set에는 포함되었으나 others에는 포함되지 않은 element들로 구성된 새 set을 리턴
{1, 2, 3}.difference({3, 4})
# -> {1, 2}
{1, 2, 3} - {3, 4}
# -> {1, 2}
symmetric_difference(other)
set ^ other
set이나 other에 포함되어 있으나 둘 모두에 포함되지는 않은 element들로 구성된 새 set을 리턴
{1, 2, 3}.symmetric_difference({3, 4})
# -> {1, 2, 4}
{1, 2, 3} ^ {3, 4}
# -> {1, 2, 4}
copy()
set의 얕은 복사본을 리턴
copy({1, 2, 3})
# -> {1, 2, 3}
set에서만 사용 가능한 operation
frozenset은 불가능
frozen_set = frozenset([1, 2, 3])
# -> frozenset({1, 2, 3})
frozen_set.update({3, 4, 5})
'''
Exception has occurred: AttributeError
'frozenset' object has no attribute 'update'
'''
update(*others)
set |= other | ...
집합을 갱신해서, 모든 others의 원소들을 더합니다.
set_06 = {1, 2, 3}
set_06.update({3, 4, 5})
# -> {1, 2, 3, 4, 5}
intersection_update(*others)
set &= other & ...
집합을 갱신해서, 그 집합과 others에 공통으로 포함된 원소들만 남깁니다.
set_07 = {1, 2, 3}
set_07.intersection_update({2, 3, 4})
# -> {2, 3}
set_07 &= {2, 3, 4} & {2, 4}
# -> {2}
difference_update(*others)
set -= other | ...
집합을 갱신해서, others에 있는 원소들을 제거합니다.
set_08 = {1, 2, 3, 4, 5, 6, 7}
set_08.difference_update({2, 3, 4})
# -> {1, 5, 6, 7}
set_08 -= {2, 3, 4} | {6, 7}
# -> {1, 5}
symmetric_difference_update(other)
set ^= other
집합을 갱신해서, 두 집합의 어느 한 곳에만 포함된 원소들만 남깁니다.
set_09 = {1, 2, 3}
set_09.symmetric_difference_update({3, 4})
# -> {1, 2, 4}
set_09 ^= {3, 4}
# -> {1, 2, 4}
add(elem)
원소 elem 을 집합에 추가합니다.
{1, 2, 3}.add(4)
# -> {1, 2, 3, 4}
remove(elem)
원소 elem 을 집합에서 제거합니다. elem 가 집합에 포함되어 있지 않으면 KeyError 를 일으킵니다.
{1, 2, 3}.remove(10)
# -> Exception has occurred: KeyError
discard(elem)
원소 elem 이 집합에 포함되어 있으면 제거합니다.
{1, 2, 3}.discard(10)
# -> {1, 2, 3}
pop()
집합으로부터 임의의 원소를 제거해 돌려줍니다. 집합이 비어있는 경우 KeyError 를 일으킵니다.
set_random = {1, 2, 3}.pop()
# -> ex) 1
{}.pop()
'''
Exception has occurred: TypeError
pop expected at least 1 argument, got 0
'''
clear()
집합의 모든 원소를 제거합니다.
{1, 2, 3}.clear()
# -> set()