Skip to content

Latest commit

 

History

History
112 lines (84 loc) · 5.45 KB

File metadata and controls

112 lines (84 loc) · 5.45 KB

Sets

set은 여러분들이 알고있는 집합과 동일하다고 보시면 됩니다. 다음의 특징을 살펴보도록 하죠.

Sets cannot have duplicate elements

set은 수학에서 배웠던 것과 마찬가지로 중복된 element들을 허용하지 않습니다.

data = {1,2,2,3}
print(data)
# 출력 결과
{1,2,3}

위와 같이, set{}에 담고싶은 element를 넣어서 선언하게 됩니다. 그렇다면 수학에서 쓰이는 개념인 공집합(empty set)은 어떻게 선언할 수 있을까요?

data = {}

상식선에선 이렇게 선언하는게 자연스럽지만, dict과 표현이 겹치기 때문에 다음과 같이 선언해야만 합니다.

data = set()

Sets are unordered collection(data structure)

set은 순서를 가질 수 없도록 구현되었기 때문에 다음과 같이 []과 같은 subscript operator로 접근하지 못합니다.

data = {1,2,3}
print(data[0])
# 출력 결과
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'set' object is not subscriptable

Sets are mutable

set 또한 mutable한 성질을 지닙니다. mutable에 대한 성질을 Lists - Lists' are mutable에서 확인 할 수 있습니다. set에도 물론 copy()을 지원합니다.

Sets cannot have mutable elements

set은 mutable한 element를 담지 못합니다. set에 담긴 element들은 서로 달라야합니다. 즉 unique한 값을 지녀야합니다. 이러한 와중에 mutable한 list, set, dictset의 elements로 존재하다가 값이 변하여 우연히 다른 elements와 중복되면 안되겠죠?

Sets are iterable

set은 순차적으로 접근이 가능합니다. 이 말이 헷갈리실 수 있을 것이라 됩니다만 다음의 예시를 보고 이해해보도록 합시다.

data = {"apple","banana","cherry"}
for i in data:
    print(i)
# 출력 결과
apple
cherry
banana

실제로 for문으로 순차적으로 i에 담겨 출력되는 것을 확인 할 수 있었지만 순서대로 나오는 것이 아니라 아무렇게 출력되는 것을 알 수 있습니다.

Sets' keywords and methods

set에서 지원하는 keywords와 methods(functions)가 있습니다. 아무래도 수학적인 개념이다 보니 당연히 수학적 연산을 지원합니다. 또한 추가,제거 등의 연산들도 지원합니다. set에서 지원하는 keywords 와 methods가 많기 때문에 하나하나 예시를 다루진 않겠습니다.

Keywords/Methods Description
in Return True if the left operand is in the set(right operand)
` `
& Return the intersection of lefte operand and right operand
- Return the difference that are only in left operand not in right operand
^ Return the Symmetric difference that same as `A
add() Add an element to the set
clear() Remove all elements from the set
copy() Return a copy of the set
difference() Return the difference of two or more sets as a new set
difference_update() Remove all elements of another set from this set
discard() Remove an element from the set if it is a member. (Do nothing if the element is not in set)
intersection() Returns the intersection of two sets as a new set
intersection_update() Updates the set with the intersection of itself and another
isdisjoint() Returns True if two sets have a null intersection
issubset() Returns True if another set contains this set
issuperset() Returns True if this set contains another set
pop() Removes and returns an arbitary set element. Raise KeyError if the set is empty
remove() Removes an element from the set. If the element is not a member, raise a KeyError
symmetric_difference() Returns the symmetric difference of two sets as a new set
symmetric_difference_update() Updates a set with the symmetric difference of itself and another
union() Returns the union of sets in a new set
update() Updates the set with the union of itself and others

Back-Built-in Data structure