Objetos conjunto

Esta sección detalla la API pública de los objetos set y frozenset. Cualquier funcionalidad que no esté listada a continuación se accede mejor utilizando el protocolo abstracto de objetos (incluyendo PyObject_CallMethod(), PyObject_RichCompareBool(), PyObject_Hash(), PyObject_Repr(), PyObject_IsTrue(), PyObject_Print(), y PyObject_GetIter()) o el protocolo numérico abstracto (incluyendo PyNumber_And(), PyNumber_Subtract(), PyNumber_Or(), PyNumber_Xor(), PyNumber_InPlaceAnd(), PyNumber_InPlaceSubtract(), PyNumber_InPlaceOr(), y PyNumber_InPlaceXor()).

type PySetObject

Este subtipo de PyObject se utiliza para mantener los datos internos de los objetos set y frozenset. Es como un PyDictObject en el sentido de que tiene un tamaño fijo para los conjuntos pequeños (muy parecido al almacenamiento de tuplas) y apuntará a un bloque de memoria separado y de tamaño variable para los conjuntos de tamaño medio y grande (muy parecido al almacenamiento de listas). Ninguno de los campos de esta estructura debe considerarse público y todos están sujetos a cambios. Todo el acceso debe hacerse a través de la API documentada en lugar de manipular los valores de la estructura.

PyTypeObject PySet_Type
Part of the Stable ABI.

Esta es una instancia de PyTypeObject que representa el tipo Python set.

PyTypeObject PyFrozenSet_Type
Part of the Stable ABI.

Esta es una instancia de PyTypeObject que representa el tipo Python frozenset.

Los siguientes macros de comprobación de tipos funcionan en punteros a cualquier objeto de Python. Del mismo modo, las funciones del constructor funcionan con cualquier objeto Python iterable.

int PySet_Check(PyObject *p)

Retorna verdadero si p es un objeto set o una instancia de un subtipo. Esta función siempre finaliza con éxito.

int PyFrozenSet_Check(PyObject *p)

Retorna verdadero si p es un objeto frozenset o una instancia de un subtipo. Esta función siempre finaliza con éxito.

int PyAnySet_Check(PyObject *p)

Retorna verdadero si p es un objeto set, un objeto frozenset, o una instancia de un subtipo. Esta función siempre finaliza con éxito.

int PySet_CheckExact(PyObject *p)

Retorna verdadero si p es un objeto set pero no una instancia de un subtipo. Esta función siempre finaliza con éxito.

Nuevo en la versión 3.10.

int PyAnySet_CheckExact(PyObject *p)

Retorna verdadero si p es un objeto set o un objeto frozenset pero no una instancia de un subtipo. Esta función siempre finaliza con éxito.

int PyFrozenSet_CheckExact(PyObject *p)

Retorna verdadero si p es un objeto frozenset pero no una instancia de un subtipo. Esta función siempre finaliza con éxito.

PyObject *PySet_New(PyObject *iterable)
Return value: New reference. Part of the Stable ABI.

Retorna un nuevo set que contiene objetos retornados por iterable. El iterable puede ser NULL para crear un nuevo conjunto vacío. Retorna el nuevo conjunto en caso de éxito o NULL en caso de error. Lanza TypeError si iterable no es realmente iterable. El constructor también es útil para copiar un conjunto (c=set(s)).

PyObject *PyFrozenSet_New(PyObject *iterable)
Return value: New reference. Part of the Stable ABI.

Retorna un nuevo frozenset que contiene objetos retornados por iterable. El iterable puede ser NULL para crear un nuevo conjunto congelado vacío. Retorna el nuevo conjunto en caso de éxito o NULL en caso de error. Lanza TypeError si iterable no es realmente iterable.

Las siguientes funciones y macros están disponibles para instancias de set o frozenset o instancias de sus subtipos.

Py_ssize_t PySet_Size(PyObject *anyset)
Part of the Stable ABI.

Return the length of a set or frozenset object. Equivalent to len(anyset). Raises a SystemError if anyset is not a set, frozenset, or an instance of a subtype.

Py_ssize_t PySet_GET_SIZE(PyObject *anyset)

Forma macro de PySet_Size() sin comprobación de errores.

int PySet_Contains(PyObject *anyset, PyObject *key)
Part of the Stable ABI.

Return 1 if found, 0 if not found, and -1 if an error is encountered. Unlike the Python __contains__() method, this function does not automatically convert unhashable sets into temporary frozensets. Raise a TypeError if the key is unhashable. Raise SystemError if anyset is not a set, frozenset, or an instance of a subtype.

int PySet_Add(PyObject *set, PyObject *key)
Part of the Stable ABI.

Añade key a una instancia set. También funciona con instancias de frozenset (al igual que PyTuple_SetItem() puede usarse para rellenar los valores de nuevos frozensets antes de que sean expuestos a otro código). Retorna 0 en caso de éxito o -1 en caso de fallo. Lanza un error TypeError si la key no se puede intercambiar. Lanza un MemoryError si no hay espacio para crecer. Lanza un SystemError si set no es una instancia de set o su subtipo.

Las siguientes funciones están disponibles para instancias de set o sus subtipos, pero no para instancias de frozenset o sus subtipos.

int PySet_Discard(PyObject *set, PyObject *key)
Part of the Stable ABI.

Return 1 if found and removed, 0 if not found (no action taken), and -1 if an error is encountered. Does not raise KeyError for missing keys. Raise a TypeError if the key is unhashable. Unlike the Python discard() method, this function does not automatically convert unhashable sets into temporary frozensets. Raise SystemError if set is not an instance of set or its subtype.

PyObject *PySet_Pop(PyObject *set)
Return value: New reference. Part of the Stable ABI.

Retorna una nueva referencia a un objeto arbitrario en el set y elimina el objeto del set. Retorna NULL en caso de falla. Lanza KeyError si el conjunto está vacío. Lanza a SystemError si set no es una instancia de set o su subtipo.

int PySet_Clear(PyObject *set)
Part of the Stable ABI.

Empty an existing set of all elements. Return 0 on success. Return -1 and raise SystemError if set is not an instance of set or its subtype.