집합 객체¶
이 절에서는 set과 frozenset 객체에 대한 공용 API에 대해 자세히 설명합니다. 아래 나열되지 않은 기능은 추상 객체 프로토콜 (PyObject_CallMethod(), PyObject_RichCompareBool(), PyObject_Hash(), PyObject_Repr(), PyObject_IsTrue(), PyObject_Print() 및 PyObject_GetIter()를 포함합니다)이나 추상 숫자 프로토콜 (PyNumber_And(), PyNumber_Subtract(), PyNumber_Or(), PyNumber_Xor(), PyNumber_InPlaceAnd(), PyNumber_InPlaceSubtract(), PyNumber_InPlaceOr() 및 PyNumber_InPlaceXor()을 포함합니다).
-
PySetObject¶ 이
PyObject의 서브 형은set과frozenset객체 모두의 내부 데이터를 담는 데 사용됩니다. 이것은 작은 집합은 고정 크기(튜플 저장과 매우 흡사함)이고, 중형과 대형 집합은 별도의 가변 크기 메모리 블록(리스트 저장소처럼)을 가리킨다는 점에서PyDictObject와 비슷합니다. 이 구조체의 필드는 아무것도 공개되지 않은 것으로 취급되어야 하며, 변경될 수 있습니다. 모든 액세스는 구조체의 값을 조작하기보다는 설명된 API를 통해 수행해야 합니다.
-
PyTypeObject
PySet_Type¶ 이것은 파이썬
set형을 나타내는PyTypeObject의 인스턴스입니다.
-
PyTypeObject
PyFrozenSet_Type¶ 이것은 파이썬
frozenset형을 나타내는PyTypeObject의 인스턴스입니다.
다음 형 검사 매크로는 모든 파이썬 객체에 대한 포인터에서 작동합니다. 마찬가지로, 생성자 함수는 모든 이터러블 파이썬 객체에서 작동합니다.
-
PyObject*
PySet_New(PyObject *iterable)¶ - Return value: New reference.
Return a new
setcontaining objects returned by the iterable. The iterable may beNULLto create a new empty set. Return the new set on success orNULLon failure. RaiseTypeErrorif iterable is not actually iterable. The constructor is also useful for copying a set (c=set(s)).
-
PyObject*
PyFrozenSet_New(PyObject *iterable)¶ - Return value: New reference.
Return a new
frozensetcontaining objects returned by the iterable. The iterable may beNULLto create a new empty frozenset. Return the new set on success orNULLon failure. RaiseTypeErrorif iterable is not actually iterable.
set 이나 frozenset의 인스턴스 또는 그들의 서브 형의 인스턴스에 대해 다음 함수와 매크로를 사용할 수 있습니다.
-
Py_ssize_t
PySet_Size(PyObject *anyset)¶ set이나frozenset객체의 길이를 반환합니다.len(anyset)와 동등합니다. anyset이set,frozenset또는 서브 형의 인스턴스가 아니면PyExc_SystemError를 발생시킵니다.
-
Py_ssize_t
PySet_GET_SIZE(PyObject *anyset)¶ 에러 검사 없는
PySet_Size()의 매크로 형식.
-
int
PySet_Contains(PyObject *anyset, PyObject *key)¶ 발견되면
1을, 발견되지 않으면0을, 에러가 발생하면-1을 반환합니다. 파이썬__contains__()메서드와는 달리, 이 함수는 해시 불가능한 집합을 임시 frozenset으로 자동 변환하지 않습니다. key가 해시 불가능하면,TypeError를 발생시킵니다. anyset이set,frozenset또는 서브 형의 인스턴스가 아니면PyExc_SystemError를 발생시킵니다.
-
int
PySet_Add(PyObject *set, PyObject *key)¶ key를
set인스턴스에 추가합니다. 또한frozenset인스턴스에도 작동합니다 (PyTuple_SetItem()처럼 다른 코드에 노출되기 전에 새로운 frozenset의 값을 채우는 데 사용할 수 있습니다). 성공하면0을, 실패하면-1을 반환합니다. key가 해시 불가능하면,TypeError를 발생시킵니다. 성장할 공간이 없다면MemoryError를 발생시킵니다. set이set이나 그 서브 형의 인스턴스가 아니면SystemError를 발생시킵니다.
다음 함수는 set 이나 그것의 서브 형의 인스턴스에는 사용할 수 있지만, frozenset 이나 그 서브 형의 인스턴스에는 사용할 수 없습니다.
-
int
PySet_Discard(PyObject *set, PyObject *key)¶ 발견되고 제거되면
1을 반환하고, 발견되지 않으면(아무런 일도 하지 않습니다)0을 반환하고, 에러가 발생하면-1을 반환합니다. 발견할 수 없는 키에 대해KeyError를 발생시키지 않습니다. key가 해시 불가능하면TypeError를 발생시킵니다. 파이썬discard()메서드와는 달리, 이 함수는 해시 불가능한 집합을 임시 frozenset으로 자동 변환하지 않습니다. set이set이나 그 서브 형의 인스턴스가 아니면PyExc_SystemError를 발생시킵니다.
-
PyObject*
PySet_Pop(PyObject *set)¶ - Return value: New reference.
Return a new reference to an arbitrary object in the set, and removes the object from the set. Return
NULLon failure. RaiseKeyErrorif the set is empty. Raise aSystemErrorif set is not an instance ofsetor its subtype.
-
int
PySet_ClearFreeList()¶ 자유 목록(free list)을 비웁니다. 해제된 항목의 총수를 반환합니다.
버전 3.3에 추가.
