Objetos Conjunto¶
Esta sección detalla la API pública para objetos set y frozenset. Se puede acceder mejor a cualquier funcionalidad que no se enumere a continuación utilizando el protocolo de objeto abstracto (que incluye PyObject_CallMethod(), PyObject_RichCompareBool(), PyObject_Hash(), PyObject_Repr(), PyObject_IsTrue(), PyObject_Print(), y PyObject_GetIter()) o el protocolo de número abstracto (que incluye PyNumber_And(), PyNumber_Subtract(), PyNumber_Or(), PyNumber_Xor(), PyNumber_InPlaceAnd(), PyNumber_InPlaceSubtract(), PyNumber_InPlaceOr(), y PyNumber_InPlaceXor()).
-
PySetObject¶ Este subtipo de
PyObjectse utiliza para contener los datos internos de los objetossetyfrozenset. Es como unPyDictObjecten el sentido de que es un tamaño fijo para conjuntos pequeños (muy parecido al almacenamiento de tuplas) y apuntará a un bloque de memoria separado de tamaño variable para conjuntos de tamaño medio y grande (muy similar a la lista almacenamiento). Ninguno de los campos de esta estructura debe considerarse público y está sujeto a cambios. Todo el acceso debe hacerse a través de la API documentada en lugar de manipular los valores en la estructura.
-
PyTypeObject
PySet_Type¶ Esta es una instancia de
PyTypeObjectque representa el tipo Pythonset.
-
PyTypeObject
PyFrozenSet_Type¶ 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.
-
int
PyFrozenSet_Check(PyObject *p)¶ Retorna verdadero si p es un objeto
frozenseto una instancia de un subtipo.
-
int
PyAnySet_Check(PyObject *p)¶ Retorna verdadero si p es un objeto
set, un objetofrozenset, o una instancia de un subtipo.
-
int
PyAnySet_CheckExact(PyObject *p)¶ Retorna verdadero si p es un objeto
seto un objetofrozensetpero no una instancia de un subtipo.
-
int
PyFrozenSet_CheckExact(PyObject *p)¶ Retorna verdadero si p es un objeto
frozensetpero no una instancia de un subtipo.
-
PyObject*
PySet_New(PyObject *iterable)¶ - Return value: New reference.
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.
Retorna un nuevo
frozensetque contiene objetos retornados por iterable. El iterable puede serNULLpara crear un nuevo conjunto congelado 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)¶ Retorna la longitud de un objeto
setofrozenset. Equivalente alen(anyset). Lanza unPyExc_SystemErrorsi 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)¶ 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 no compartibles en congelados temporales. Lanza unTypeErrorsi la key no se puede compartir. LanzaPyExc_SystemErrorsi anyset no es unset,frozenset, o una instancia de un subtipo.
-
int
PySet_Add(PyObject *set, PyObject *key)¶ Agrega key a una instancia de
set. También funciona con instanciasfrozenset(comoPyTuple_SetItem()se puede usar para completar los valores de los frozensets nuevos antes de que estén expuestos a otro código). Retorna0en caso de éxito o-1en caso de error. Lanza unTypeErrorsi la key no se puede compartir. 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)¶ 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 se puede compartir. A diferencia del método Pythondiscard(), esta función no convierte automáticamente conjuntos no compartibles en congelados temporales. LanzaPyExc_SystemErrorsi set no es una instancia deseto 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
NULLen caso de falla. LanzaKeyErrorsi el conjunto está vacío. Lanza aSystemErrorsi set no es una instancia deseto su subtipo.
-
int
PySet_ClearFreeList()¶ Borra la lista libre. Retorna el número total de artículos liberados.
Nuevo en la versión 3.3.