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
PyObjectse utiliza para mantener los datos internos de los objetossetyfrozenset. Es como unPyDictObjecten 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
PyTypeObjectque representa el tipo Pythonset.
-
PyTypeObject PyFrozenSet_Type¶
- Part of the Stable ABI.
Esta es una instancia de
PyTypeObjectque representa el tipo Pythonfrozenset.
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
seto una instancia de un subtipo. Esta función siempre finaliza con éxito.
-
int PyFrozenSet_Check(PyObject *p)¶
Retorna verdadero si p es un objeto
frozenseto 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 objetofrozenset, 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
setpero no una instancia de un subtipo. Esta función siempre finaliza con éxito.Added in version 3.10.
-
int PyAnySet_CheckExact(PyObject *p)¶
Retorna verdadero si p es un objeto
seto un objetofrozensetpero 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
frozensetpero 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
setque contiene objetos retornados por iterable. El iterable puede serNULLpara crear un nuevo conjunto vacío. Retorna el nuevo conjunto en caso de éxito oNULLen caso de error. LanzaTypeErrorsi 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
frozensetque contiene objetos retornados por iterable. El iterable puede serNULLpara crear un nuevo frozenset vacío. Retorna el nuevo conjunto en caso de éxito oNULLen caso de error. LanzaTypeErrorsi 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.
Retorna la longitud de un objeto
setofrozenset. Equivalente alen(anyset). Lanza unSystemErrorsi anyset no esset,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)¶
- Part of the Stable ABI.
Retorna
1si se encuentra,0si no se encuentra y-1si se encuentra un error. A diferencia del método Python__contains__(), esta función no convierte automáticamente conjuntos que no son hashable en frozensets temporales. Lanza unTypeErrorsi la key no es hashable. LanzaSystemErrorsi anyset no es unset,frozenset, o una instancia de un subtipo.
-
int PySet_Add(PyObject *set, PyObject *key)¶
- Part of the Stable ABI.
Añade key a una instancia
set. También funciona con instancias defrozenset(al igual quePyTuple_SetItem()puede usarse para rellenar los valores de nuevos frozensets antes de que sean expuestos a otro código). Retorna0en caso de éxito o-1en caso de fallo. Lanza un errorTypeErrorsi la key no es hashable. Lanza unMemoryErrorsi no hay espacio para crecer. Lanza unSystemErrorsi set no es una instancia deseto 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.
Retorna
1si se encuentra y se elimina,0si no se encuentra (no se realiza ninguna acción) y-1si se encuentra un error. No lanzaKeyErrorpor faltar claves. Lanza unTypeErrorsi la key no es hashable. A diferencia del método Pythondiscard(), esta función no convierte automáticamente conjuntos que no son hashable en frozensets temporales. LanzaSystemErrorsi set no es una instancia deseto su subtipo.
-
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
NULLen caso de falla. LanzaKeyErrorsi el conjunto está vacío. Lanza aSystemErrorsi set no es una instancia deseto su subtipo.
-
int PySet_Clear(PyObject *set)¶
- Part of the Stable ABI.
Vacía todos los elementos de un conjunto existente. Retorna
0en caso de éxito. Retorna-1y lanzaSystemErrorsi set no es una instancia deseto su subtipo.