기본 제공 세트 유형입니다. 집합은 변경 가능하고 반복 가능한 고유한 값(집합의 요소)의 모음입니다. 집합의 유형 이름은 "set"
입니다.
세트는 값을 삽입, 삭제 또는 확인하는 일정 시간 작업을 제공합니다. 세트는 해시 테이블을 사용하여 구현되므로 사전의 키와 마찬가지로 세트의 요소는 해싱 가능해야 합니다. 값은 사전의 키로 사용할 수 있는 경우에만 집합의 요소로 사용할 수 있습니다.
집합은 반복 가능한 값이어야 하는 선택적 인수의 고유한 요소가 포함된 새 집합을 반환하는 set()
내장 함수를 사용하여 생성할 수 있습니다. 인수 없이 set()
을 호출하면 빈 세트가 생성됩니다. 세트에는 리터럴 문법이 없습니다.
in
및 not 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의 모든 변경 가능한 값과 마찬가지로 세트는 고정할 수 있으며, 고정되면 이후에 세트를 업데이트하려는 모든 작업이 실패합니다.
회원
- 추가
- 지우기
- 차이
- difference_update
- 삭제
- intersection
- intersection_update
- isdisjoint
- issubset
- issuperset
- pop
- 삭제
- symmetric_difference
- symmetric_difference_update
- union
- 업데이트
추가
None
set.add(element)
세트에 이미 있는 값을 add
해도 됩니다. 그러면 세트는 변경되지 않습니다.
집합에 여러 요소를 추가해야 하는 경우 update
또는 |=
증강 할당 연산을 참고하세요.
매개변수
매개변수 | 설명 |
---|---|
element
|
required 추가할 요소입니다. |
지우기
None
set.clear()
차이
set set.difference(*others)
s
와 t
가 집합인 경우 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)
s
및 t
가 집합인 경우 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)
s
및 t
가 집합인 경우 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)
s
및 t
가 집합인 경우 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)
예를 들면 다음과 같습니다.
set([1, 2]).isdisjoint([3, 4]) # True set().isdisjoint(set()) # True set([1, 2]).isdisjoint([2, 3]) # False
매개변수
매개변수 | 설명 |
---|---|
other
|
필수 집합, 해싱 가능한 요소의 시퀀스 또는 사전입니다. |
issubset
bool set.issubset(other)
집합은 항상 자체의 하위 집합으로 간주됩니다.
예를 들면 다음과 같습니다.
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)
집합은 항상 자체의 상위 집합으로 간주됩니다.
예를 들면 다음과 같습니다.
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)
s
및 t
가 집합인 경우 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)
s
와 t
가 집합인 경우 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)
s
와 t
가 집합인 경우 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])
s
및 t
가 집합인 경우 s.update(t)
는 s |= t
와 같습니다. 그러나 |=
증강 할당은 양쪽 모두 집합이어야 하지만 update
메서드는 시퀀스와 사전도 허용합니다.
인수 없이 update
를 호출할 수 있습니다. 그러면 세트가 변경되지 않습니다.
매개변수
매개변수 | 설명 |
---|---|
others
|
필수 해싱 가능한 요소의 집합, 시퀀스 또는 사전입니다. |