Objeto Set¶
Esta seção detalha a API pública para os objetos set e frozenset. Qualquer funcionalidade não listada abaixo é melhor acessada usando o protocolo de objeto abstrato (incluindo PyObject_CallMethod(), PyObject_RichCompareBool(), PyObject_Hash(), PyObject_Repr(), PyObject_IsTrue(), PyObject_Print(), and PyObject_GetIter()) ou o protocolo abstrato de número (incluindo PyNumber_And(), PyNumber_Subtract(), PyNumber_Or(), PyNumber_Xor(), PyNumber_InPlaceAnd(), PyNumber_InPlaceSubtract(), PyNumber_InPlaceOr() e PyNumber_InPlaceXor()).
-
PySetObject¶ Este subtipo de
PyObjecté usado para manter os dados internos para ambos os objetossetefrozenset. É como umPyDictObjectem que tem um tamanho fixo para conjuntos pequenos (muito parecido com o armazenamento de tupla) e apontará para um bloco de memória de tamanho variável separado para conjuntos de tamanho médio e grande (muito parecido com lista armazenamento). Nenhum dos campos desta estrutura deve ser considerado público e está sujeito a alterações. Todo o acesso deve ser feito por meio da API documentada, em vez de manipular os valores na estrutura.
-
PyTypeObject
PySet_Type¶ Essa é uma instância de
PyTypeObjectrepresentando a classe Python do tipo set
-
PyTypeObject
PyFrozenSet_Type¶ Esta é uma instância de
PyTypeObjectrepresentando o tipo Pythonfrozenset.
As macros de verificação de tipo a seguir funcionam em ponteiros para qualquer objeto Python. Da mesma forma, as funções construtoras funcionam com qualquer objeto Python iterável.
-
int
PySet_Check(PyObject *p)¶ Retorna verdadeiro se p for um objeto
setou uma instância de um subtipo.
-
int
PyFrozenSet_Check(PyObject *p)¶ Retorna verdadeiro se p for um objeto
frozensetou uma instância de um subtipo.
-
int
PyAnySet_Check(PyObject *p)¶ Retorna verdadeiro se p for um objeto
set, um objetofrozensetou uma instância de um subtipo.
-
int
PyAnySet_CheckExact(PyObject *p)¶ Retorna verdadeiro se p for um objeto
setou um objetofrozenset, mas não uma instância de um subtipo.
-
int
PyFrozenSet_CheckExact(PyObject *p)¶ Retorna verdadeiro se p for um objeto
frozenset, mas não uma instância de um subtipo.
-
PyObject*
PySet_New(PyObject *iterable)¶ - Return value: New reference.
Return a new
setcontaining objects returned by the iterable. The iterable may be NULL to create a new empty set. Return the new set on success or NULL on 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 be NULL to create a new empty frozenset. Return the new set on success or NULL on failure. RaiseTypeErrorif iterable is not actually iterable.
As seguintes funções e macros estão disponíveis para instâncias de set ou frozenset ou instâncias de seus subtipos.
-
Py_ssize_t
PySet_Size(PyObject *anyset)¶ Retorna o comprimento de um objeto
setoufrozenset. Equivalente alen(anyset). Levanta umPyExc_SystemErrorse anyset não for umset,frozenset, ou uma instância de um subtipo.
-
Py_ssize_t
PySet_GET_SIZE(PyObject *anyset)¶ Forma macro de
PySet_Size()sem verificação de erros.
-
int
PySet_Contains(PyObject *anyset, PyObject *key)¶ Retorna
1se encontrado,0se não encontrado, e-1se um erro é encontrado. Ao contrário do método Python__contains__(), esta função não converte automaticamente conjuntos não hasheáveis em frozensets temporários. Levanta umTypeErrorse a key não for hasheável. LevantaPyExc_SystemErrorse anyset não é umset,frozenset, ou uma instância de um subtipo.
-
int
PySet_Add(PyObject *set, PyObject *key)¶ Adiciona key a uma instância de
set. Também funciona com instâncias defrozenset(comoPyTuple_SetItem(), ele pode ser usado para preencher os valores de novos conjuntos de congelamentos antes que eles sejam expostos a outro código). Retorna0em caso de sucesso ou-1em caso de falha. Levanta umTypeErrorse a key não for hasheável. Levanta umaMemoryErrorse não houver espaço para crescer. Levanta umaSystemErrorse set não for uma instância desetou seu subtipo.
As seguintes funções estão disponíveis para instâncias de set ou seus subtipos, mas não para instâncias de frozenset ou seus subtipos.
-
int
PySet_Discard(PyObject *set, PyObject *key)¶ Retorna
1se encontrado e removido,0se não encontrado (nenhuma ação realizada) e-1se um erro for encontrado. Não levantaKeyErrorpara chaves ausentes. Levanta umaTypeErrorse a key não for hasheável. Ao contrário do método Pythondiscard(), esta função não converte automaticamente conjuntos não hasheáveis em frozensets temporários. LevantaPyExc_SystemErrorse set não é uma instância desetou seu subtipo.
-
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 NULL on failure. Raise
KeyErrorif the set is empty. Raise aSystemErrorif set is not an instance ofsetor its subtype.
-
int
PySet_ClearFreeList()¶ Limpe a lista livre. Retorna o número total de itens liberados.
Novo na versão 3.3.
