set

문제 신고 소스 보기 나이틀리 빌드 · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

기본 제공 세트 유형입니다. 세트는 변경 가능하고 반복 가능한 고유 값의 컬렉션(세트의 요소)입니다. 세트의 유형 이름"set"입니다.

세트는 값을 삽입, 삭제 또는 값의 존재 여부를 확인하는 데 일정한 시간 작업을 제공합니다. 세트는 해시 테이블을 사용하여 구현되므로 사전의 키와 마찬가지로 세트의 요소는 해시 가능해야 합니다. 값은 사전의 키로 사용할 수 있는 경우에만 집합의 요소로 사용할 수 있습니다.

집합은 set() 내장 함수를 사용하여 구성할 수 있습니다. 이 함수는 반복 가능해야 하는 선택적 인수의 고유 요소를 포함하는 새 집합을 반환합니다. 인수 없이 set()을 호출하면 빈 집합이 생성됩니다. 집합에는 리터럴 문법이 없습니다.

innot in 작업은 값이 집합에 있는지 (또는 없는지) 확인합니다.

s = set(["a", "b", "c"])
"a" in s  # True
"z" in s  # False

집합은 반복 가능하므로 for 루프, 목록 내포, 반복 가능 항목에서 작동하는 다양한 기본 제공 함수의 피연산자로 사용할 수 있습니다. 길이는 len() 기본 제공 함수를 사용하여 가져올 수 있으며, 반복 순서는 요소가 집합에 처음 추가된 순서입니다.

s = set(["z", "y", "z", "y"])
len(s)       # prints 2
s.add("x")
len(s)       # prints 3
for e in s:
    print e  # prints "z", "y", "x"

불리언 컨텍스트에서 사용되는 집합은 비어 있지 않은 경우에만 true입니다.

s = set()
"non-empty" if s else "empty"  # "empty"
t = set(["x", "y"])
"non-empty" if t else "empty"  # "non-empty"

==!=을 사용하여 집합의 동등성 또는 부등성을 비교할 수 있습니다. s 집합은 t이 동일한 요소를 포함하는 집합인 경우에만 t과 같습니다. 반복 순서는 중요하지 않습니다. 특히 집합은 요소 목록과 같지 않습니다. 집합은 다른 집합과 관련하여 정렬되지 않으며 <, <=, >, >=를 사용하여 두 집합을 비교하거나 집합 시퀀스를 정렬하려고 하면 실패합니다.

set() == set()              # True
set() != []                 # True
set([1, 2]) == set([2, 1])  # True
set([1, 2]) != [1, 2]       # True

두 집합에 대한 | 작업은 두 집합의 합집합을 반환합니다. 즉, 원래 집합 중 하나 또는 둘 모두에 있는 요소를 포함하는 집합을 반환합니다.

set([1, 2]) | set([3, 2])  # set([1, 2, 3])

두 집합에 대한 & 작업은 두 집합의 교집합을 반환합니다. 즉, 원래 집합 두 개 모두에 있는 요소만 포함하는 집합을 반환합니다.

set([1, 2]) & set([2, 3])  # set([2])
set([1, 2]) & set([3, 4])  # set()

두 집합에 대한 - 연산자는 두 집합의 차이를 반환합니다. 즉, 왼쪽 집합에 있지만 오른쪽 집합에는 없는 요소를 포함하는 집합을 반환합니다.

set([1, 2]) - set([2, 3])  # set([1])
set([1, 2]) - set([3, 4])  # set([1, 2])

두 집합에 대한 ^ 작업은 두 집합의 대칭 차이를 반환합니다. 즉, 원래 두 집합 중 정확히 하나에만 있고 둘 다에는 없는 요소를 포함하는 집합입니다.

set([1, 2]) ^ set([2, 3])  # set([1, 3])
set([1, 2]) ^ set([3, 4])  # set([1, 2, 3, 4])

위의 각 작업에서 결과 집합의 요소는 두 피연산자 집합의 순서를 유지하며, 왼쪽에서 가져온 모든 요소는 오른쪽에만 있는 요소 앞에 정렬됩니다.

|=, &=, -=, ^=와 같은 해당 증강 할당은 왼쪽 집합을 제자리에서 수정합니다.

s = set([1, 2])
s |= set([2, 3, 4])     # s now equals set([1, 2, 3, 4])
s &= set([0, 1, 2, 3])  # s now equals set([1, 2, 3])
s -= set([0, 1])        # s now equals set([2, 3])
s ^= set([3, 4])        # s now equals set([2, 4])

Starlark의 모든 변경 가능한 값과 마찬가지로 집합은 고정될 수 있으며, 고정되면 집합을 업데이트하려고 시도하는 모든 후속 작업이 실패합니다.

회원

추가

None set.add(element)

세트에 요소를 추가합니다.

이미 집합에 있는 값을 add하는 것은 허용됩니다. 이렇게 하면 집합이 변경되지 않습니다.

세트에 여러 요소를 추가해야 하는 경우 update 또는 |= 증강 할당 작업을 참고하세요.

매개변수

매개변수 설명
element 추가할 필수
요소입니다.

지우기

None set.clear()

세트의 모든 요소를 삭제합니다.

차이

set set.difference(*others)

이 집합과 다른 집합의 차이를 포함하는 변경 가능한 새 집합을 반환합니다.

st가 집합인 경우 s.difference(t)s - t와 동일합니다. 하지만 - 작업에는 양쪽이 모두 집합이어야 하는 반면 difference 메서드는 시퀀스와 사전도 허용합니다.

인수 없이 difference를 호출할 수 있습니다. 이렇게 하면 집합의 사본이 반환됩니다.

예를 들면 다음과 같습니다.

set([1, 2, 3]).difference([2])             # set([1, 3])
set([1, 2, 3]).difference([0, 1], [3, 4])  # set([2])

매개변수

매개변수 설명
others 필수
해시 가능한 요소의 시퀀스 또는 dict를 설정합니다.

difference_update

None set.difference_update(*others)

이 집합에서 다른 집합에 있는 요소를 모두 삭제합니다.

st이 집합인 경우 s.difference_update(t)s -= t과 동일합니다. 하지만 -= 증강 할당에는 양쪽 모두 집합이어야 하는 반면 difference_update 메서드는 시퀀스와 dict도 허용합니다.

인수 없이 difference_update를 호출할 수 있습니다. 이렇게 하면 집합이 변경되지 않습니다.

예를 들면 다음과 같습니다.

s = set([1, 2, 3, 4])
s.difference_update([2])             # None; s is set([1, 3, 4])
s.difference_update([0, 1], [4, 5])  # None; s is set([3])

매개변수

매개변수 설명
others 필수
해시 가능한 요소의 시퀀스 또는 dict를 설정합니다.

삭제

None set.discard(element)

요소가 있는 경우 집합에서 요소를 삭제합니다.

세트에 없는 값을 discard해도 됩니다. 이렇게 하면 세트가 변경되지 않습니다. 없는 요소를 삭제하려고 할 때 실패하려면 remove를 대신 사용하세요. 세트에서 여러 요소를 삭제해야 하는 경우 difference_update 또는 -= 증강 할당 작업을 참고하세요.

예를 들면 다음과 같습니다.

s = set(["x", "y"])
s.discard("y")  # None; s == set(["x"])
s.discard("y")  # None; s == set(["x"])

매개변수

매개변수 설명
element 삭제할 필수
요소입니다. 해시 가능해야 합니다.

교집합

set set.intersection(*others)

이 집합과 다른 집합의 교집합을 포함하는 새로운 변경 가능한 집합을 반환합니다.

st가 집합인 경우 s.intersection(t)s & t와 동일합니다. 하지만 & 작업에는 양쪽이 모두 집합이어야 하는 반면 intersection 메서드는 시퀀스와 사전도 허용합니다.

인수 없이 intersection를 호출할 수 있습니다. 이렇게 하면 집합의 사본이 반환됩니다.

예를 들면 다음과 같습니다.

set([1, 2]).intersection([2, 3])             # set([2])
set([1, 2, 3]).intersection([0, 1], [1, 2])  # set([1])

매개변수

매개변수 설명
others 필수
해시 가능한 요소의 시퀀스 또는 dict를 설정합니다.

intersection_update

None set.intersection_update(*others)

이 세트에서 다른 모든 세트에서 찾을 수 없는 요소를 삭제합니다.

st가 집합인 경우 s.intersection_update(t)s &= t와 동일합니다. 하지만 &= 증강 할당에는 양쪽이 모두 집합이어야 하는 반면 intersection_update 메서드는 시퀀스와 dict도 허용합니다.

인수 없이 intersection_update를 호출할 수 있습니다. 이렇게 하면 집합이 변경되지 않습니다.

예를 들면 다음과 같습니다.

s = set([1, 2, 3, 4])
s.intersection_update([0, 1, 2])       # None; s is set([1, 2])
s.intersection_update([0, 1], [1, 2])  # None; s is set([1])

매개변수

매개변수 설명
others 필수
해시 가능한 요소의 시퀀스 또는 dict를 설정합니다.

isdisjoint

bool set.isdisjoint(other)

이 집합에 다른 집합과 공통된 요소가 없으면 true를 반환합니다.

예를 들면 다음과 같습니다.

set([1, 2]).isdisjoint([3, 4])  # True
set().isdisjoint(set())         # True
set([1, 2]).isdisjoint([2, 3])  # False

매개변수

매개변수 설명
other 필수
해시 가능한 요소의 집합, 시퀀스 또는 사전입니다.

issubset

bool set.issubset(other)

이 집합이 다른 집합의 하위 집합인 경우 true를 반환합니다.

집합은 항상 자체의 하위 집합으로 간주됩니다.

예를 들면 다음과 같습니다.

set([1, 2]).issubset([1, 2, 3])  # True
set([1, 2]).issubset([1, 2])     # True
set([1, 2]).issubset([2, 3])     # False

매개변수

매개변수 설명
other 필수
해시 가능한 요소의 집합, 시퀀스 또는 사전입니다.

issuperset

bool set.issuperset(other)

이 집합이 다른 집합의 상위 집합인 경우 true를 반환합니다.

집합은 항상 자체의 상위 집합으로 간주됩니다.

예를 들면 다음과 같습니다.

set([1, 2, 3]).issuperset([1, 2])     # True
set([1, 2, 3]).issuperset([1, 2, 3])  # True
set([1, 2, 3]).issuperset([2, 3, 4])  # False

매개변수

매개변수 설명
other 필수
해시 가능한 요소의 집합, 시퀀스 또는 사전입니다.

unknown set.pop()

집합의 첫 번째 요소를 삭제하고 반환합니다 (요소가 집합에 처음 추가된 순서인 반복 순서).

세트가 비어 있으면 실패합니다.

예를 들면 다음과 같습니다.

s = set([3, 1, 2])
s.pop()  # 3; s == set([1, 2])
s.pop()  # 1; s == set([2])
s.pop()  # 2; s == set()
s.pop()  # error: empty set

삭제

None set.remove(element)

집합에서 집합에 있어야 하는 요소를 삭제합니다.

요소가 집합에 없으면 remove이 실패합니다. 없는 요소를 삭제하려고 할 때 실패하지 않으려면 discard를 대신 사용하세요. 세트에서 여러 요소를 삭제해야 하는 경우 difference_update 또는 -= 증강 할당 작업을 참고하세요.

매개변수

매개변수 설명
element 필수
삭제할 요소입니다. 집합의 요소여야 합니다 (해시 가능).

symmetric_difference

set set.symmetric_difference(other)

이 집합과 다른 집합, 시퀀스 또는 사전의 대칭 차이를 포함하는 새로운 변경 가능한 집합을 반환합니다.

st가 집합인 경우 s.symmetric_difference(t)s ^ t와 동일합니다. 하지만 ^ 작업에는 양쪽이 모두 집합이어야 하는 반면 symmetric_difference 메서드는 시퀀스나 사전도 허용합니다.

예를 들면 다음과 같습니다.

set([1, 2]).symmetric_difference([2, 3])  # set([1, 3])

매개변수

매개변수 설명
other 필수
해시 가능한 요소의 집합, 시퀀스 또는 사전입니다.

symmetric_difference_update

None set.symmetric_difference_update(other)

이 집합과 다른 집합, 시퀀스 또는 사전의 대칭 차이를 포함하는 새로운 변경 가능한 집합을 반환합니다.

st이 집합인 경우 s.symmetric_difference_update(t)은 `s ^= t` 와 같습니다. ; however, note that the ^=증강 할당에는 양쪽이 모두 집합이어야 하지만 symmetric_difference_update 메서드는 시퀀스나 dict도 허용합니다.

예를 들면 다음과 같습니다.

s = set([1, 2])
s.symmetric_difference_update([2, 3])  # None; s == set([1, 3])

매개변수

매개변수 설명
other 필수
해시 가능한 요소의 집합, 시퀀스 또는 사전입니다.

합집합

set set.union(*others)

이 집합과 다른 집합의 합집합을 포함하는 새로운 변경 가능한 집합을 반환합니다.

st가 집합인 경우 s.union(t)s | t와 동일합니다. 하지만 | 작업에는 양쪽이 모두 집합이어야 하는 반면 union 메서드는 시퀀스와 사전도 허용합니다.

인수 없이 union를 호출할 수 있습니다. 이렇게 하면 세트의 사본이 반환됩니다.

예를 들면 다음과 같습니다.

set([1, 2]).union([2, 3])                    # set([1, 2, 3])
set([1, 2]).union([2, 3], {3: "a", 4: "b"})  # set([1, 2, 3, 4])

매개변수

매개변수 설명
others 필수
해시 가능한 요소의 시퀀스 또는 dict를 설정합니다.

update

None set.update(*others)

다른 요소에 있는 요소를 이 집합에 추가합니다.

예를 들면 다음과 같습니다.

s = set()
s.update([1, 2])          # None; s is set([1, 2])
s.update([2, 3], [3, 4])  # None; s is set([1, 2, 3, 4])

st가 집합인 경우 s.update(t)s |= t와 동일합니다. 하지만 |= 증강 할당에는 양쪽 모두 집합이어야 하는 반면 update 메서드는 시퀀스와 dict도 허용합니다.

인수 없이 update를 호출할 수 있습니다. 이렇게 하면 집합이 변경되지 않습니다.

매개변수

매개변수 설명
others 필수
해시 가능한 요소의 시퀀스 또는 dict를 설정합니다.