Set Type - set, frozenset
set 오브젝트는 distinct하고 hashable한 순서 없는 컬렉션입니다. 일반적인 용도는 멤버십 검사, 시퀀스에서 중복 제거와 교집합, 합집합, 차집합, 대칭 차집합과 같은 수학 연산을 계산하는 것입니다.
다른 컬렉션과 마찬가지로, 집합은 x in set
, len(set)
, for x in set
을 지원합니다. 순서가 없는 컬렉션이므로, 집합은 원소의 위치나 삽입 순서를 기록하지 않습니다. 따라서 집합은 인덱싱, 슬라이싱 또는 기타 시퀀스와 유사한 동작을 지원하지 않습니다.
현재 set과 frozenset 두 가지 buit-in type이 있습니다.
set은 mutable하기 때문에 add()
나 remove()
같은 메소드를 시용하여 변경이 가능합니다.
그리고 가변이기 때문에 해시값이 없으며 dictionary key 또는 다른 set의 element로 사용할 수 없습니다.
frozenset은 imutable하기 때문에 hashable합니다. 따라서 dictionary key 또는 다른 set의 element로 사용할 수 있습니다.
비어 있지 않은 set은 생성자뿐만 아니라 중괄호 안에 쉼표로 구분된 element를 넣어 생성할 수 있습니다.
두 클래스의 생성자는 동일하게 작동합니다.
class set([iterable])
class frozenset([iterable])
iterable 에서 element를 취하는 새 set 또는 frozenset 객체를 돌려줍니다. set의 element는 반드시 hashable해야 합니다. sets의 sets을 표현하려면 inner sets은 반드시 frozenset 이여야합니다. 만약 iterable이 not specified하면 빈 set을 return 합니다.
set은 여러가지 방법으로 만들 수 있습니다.
* 중괄호 안에 쉼표로 구분된 element 나열 {'jack', 'smith'}
* set comprehension 사용 {c for c in 'abracadabra' if c not in 'abc'}
* 생성자 사용 set()
, set('footer')
, set(['a', 'b', 'foo'])
set_01 = {'jack', 'sjoerd'}
# -> {'jack', 'sjoerd'}
set_02 = {c for c in 'abracadabra' if c not in 'abc'}
# -> {'d', 'r'}
set_03 = set()
# -> set()
set_04 = set('foobar')
# -> {'b', 'o', 'f', 'a', 'r'}
set_05 = set(['a', 'b', 'c'])
# -> {'c', 'b', 'a'}
set과 frozenset은 다음과 같은 operation을 제공합니다.