[파이썬] Set Types - operations

set과 frozenset 모두 사용 가능한 operation

len(s)

set의 크기를 반환

len({1, 2, 3})
# -> 3

x in s

set s에 x가 존재하면 True 반환

1 in {1, 2, 3}
# -> 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()

links

social