set

문제 신고 소스 보기 Nightly 8.1 · 8.0 · 7.5 · 7.4 · 7.3 · 7.2

기본 제공 세트 유형입니다. 집합은 변경 가능하고 반복 가능한 고유한 값(집합의 요소)의 모음입니다. 집합의 유형 이름"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"

==!=를 사용하여 집합의 동등성 또는 불등성을 비교할 수 있습니다. 집합 st가 동일한 요소를 포함하는 집합인 경우에만 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 required
추가할 요소입니다.

지우기

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 필수
해싱 가능한 요소의 집합, 시퀀스 또는 사전입니다.

difference_update

None set.difference_update(*others)

다른 세트에서 발견된 요소를 이 세트에서 삭제합니다.

st가 집합인 경우 s.difference_update(t)s -= t와 같습니다. 그러나 -= 증강 할당은 양쪽 모두 집합이어야 하지만 difference_update 메서드는 시퀀스와 사전을 허용합니다.

인수 없이 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 필수
해싱 가능한 요소의 집합, 시퀀스 또는 사전입니다.

삭제

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 required
삭제할 요소입니다. 해싱 가능해야 합니다.

교집합

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 필수
해싱 가능한 요소의 집합, 시퀀스 또는 사전입니다.

intersection_update

None set.intersection_update(*others)

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

st가 집합인 경우 s.intersection_update(t)s &= t와 같습니다. 그러나 &= 증강 할당은 양쪽 모두 집합이어야 하지만 intersection_update 메서드는 시퀀스와 사전을 허용합니다.

인수 없이 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 필수
해싱 가능한 요소의 집합, 시퀀스 또는 사전입니다.

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 required
삭제할 요소입니다. 집합의 요소여야 하며 해싱 가능해야 합니다.

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 메서드는 시퀀스나 사전도 허용합니다.

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

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 필수
해싱 가능한 요소의 집합, 시퀀스 또는 사전입니다.

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 메서드는 시퀀스와 사전도 허용합니다.

인수 없이 update를 호출할 수 있습니다. 그러면 세트가 변경되지 않습니다.

매개변수

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