[파이썬] Set Types - set & frozenset

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을 제공합니다.

links

social