Objetos Conjunto

This section details the public API for set and frozenset objects. Any functionality not listed below is best accessed using either the abstract object protocol (including PyObject_CallMethod(), PyObject_RichCompareBool(), PyObject_Hash(), PyObject_Repr(), PyObject_IsTrue(), PyObject_Print(), and PyObject_GetIter()) or the abstract number protocol (including PyNumber_And(), PyNumber_Subtract(), PyNumber_Or(), PyNumber_Xor(), PyNumber_InPlaceAnd(), PyNumber_InPlaceSubtract(), PyNumber_InPlaceOr(), and PyNumber_InPlaceXor()).

PySetObject

This subtype of PyObject is used to hold the internal data for both set and frozenset objects. It is like a PyDictObject in that it is a fixed size for small sets (much like tuple storage) and will point to a separate, variable sized block of memory for medium and large sized sets (much like list storage). None of the fields of this structure should be considered public and all are subject to change. All access should be done through the documented API rather than by manipulating the values in the structure.

PyTypeObject PySet_Type

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

PyTypeObject PyFrozenSet_Type

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 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.

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.

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)

Retorna la longitud de un objeto set o frozenset. Equivalente a len(anyset). Lanza un PyExc_SystemError si anyset no es set, frozenset, o una instancia de un subtipo.

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)

Retorna 1 si se encuentra, 0 si no se encuentra y -1 si se encuentra un error. A diferencia del método Python __contains__(), esta función no convierte automáticamente conjuntos no compartibles en congelados temporales. Lanza un TypeError si la key no se puede compartir. Lanza PyExc_SystemError si anyset no es un set, frozenset, o una instancia de un subtipo.

int PySet_Add(PyObject *set, PyObject *key)

Add key to a set instance. Also works with frozenset instances (like PyTuple_SetItem() it can be used to fill in the values of brand new frozensets before they are exposed to other code). Return 0 on success or -1 on failure. Raise a TypeError if the key is unhashable. Raise a MemoryError if there is no room to grow. Raise a SystemError if set is not an instance of set or its subtype.

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)

Retorna 1 si se encuentra y se elimina, 0 si no se encuentra (no se realiza ninguna acción) y -1 si se encuentra un error. No lanza KeyError por faltar claves. Lanza un TypeError si la key no se puede compartir. A diferencia del método Python discard(), esta función no convierte automáticamente conjuntos no compartibles en congelados temporales. Lanza PyExc_SystemError si set no es una instancia de set o su subtipo.

PyObject* PySet_Pop(PyObject *set)
Return value: New reference.

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)

Vacía un conjunto existente de todos los elementos.