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()
e 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()
).
-
type PySetObject¶
Este subtipo de
PyObject
é usado para manter os dados internos para ambos os objetosset
efrozenset
. É como umPyDictObject
em 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 todos estão sujeitos 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¶
- Parte da ABI Estável.
Essa é uma instância de
PyTypeObject
representando o tipo Pythonset
-
PyTypeObject PyFrozenSet_Type¶
- Parte da ABI Estável.
Esta é uma instância de
PyTypeObject
representando 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
set
ou uma instância de um subtipo. Esta função sempre tem sucesso.
-
int PyFrozenSet_Check(PyObject *p)¶
Retorna verdadeiro se p for um objeto
frozenset
ou uma instância de um subtipo. Esta função sempre tem sucesso.
-
int PyAnySet_Check(PyObject *p)¶
Retorna verdadeiro se p for um objeto
set
, um objetofrozenset
ou uma instância de um subtipo. Esta função sempre tem sucesso.
-
int PySet_CheckExact(PyObject *p)¶
Retorna verdadeiro se p for um objeto
set
, mas não uma instância de um subtipo. Esta função sempre tem sucesso.Adicionado na versão 3.10.
-
int PyAnySet_CheckExact(PyObject *p)¶
Retorna verdadeiro se p for um objeto
set
ou um objetofrozenset
, mas não uma instância de um subtipo. Esta função sempre tem sucesso.
-
int PyFrozenSet_CheckExact(PyObject *p)¶
Retorna verdadeiro se p for um objeto
frozenset
, mas não uma instância de um subtipo. Esta função sempre tem sucesso.
-
PyObject *PySet_New(PyObject *iterable)¶
- Retorna valor: Nova referência. Parte da ABI Estável.
Retorna uma nova
set
contendo objetos retornados pelo iterável iterable. O iterable pode serNULL
para criar um novo conjunto vazio. Retorna o novo conjunto em caso de sucesso ouNULL
em caso de falha. LevantaTypeError
se iterable não for realmente iterável. O construtor também é útil para copiar um conjunto (c=set(s)
).
-
PyObject *PyFrozenSet_New(PyObject *iterable)¶
- Retorna valor: Nova referência. Parte da ABI Estável.
Retorna uma nova
frozenset
contendo objetos retornados pelo iterável iterable. O iterable pode serNULL
para criar um novo frozenset vazio. Retorna o novo conjunto em caso de sucesso ouNULL
em caso de falha. LevantaTypeError
se iterable não for realmente iterável.
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)¶
- Parte da ABI Estável.
Retorna o comprimento de um objeto
set
oufrozenset
. Equivalente alen(anyset)
. Levanta umSystemError
se 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)¶
- Parte da ABI Estável.
Retorna
1
se encontrado,0
se não encontrado, e-1
se 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 umTypeError
se a key não for hasheável. LevantaSystemError
se anyset não é umset
,frozenset
, ou uma instância de um subtipo.
-
int PySet_Add(PyObject *set, PyObject *key)¶
- Parte da ABI Estável.
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). Retorna0
em caso de sucesso ou-1
em caso de falha. Levanta umTypeError
se a key não for hasheável. Levanta umaMemoryError
se não houver espaço para crescer. Levanta umaSystemError
se set não for uma instância deset
ou 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)¶
- Parte da ABI Estável.
Retorna
1
se encontrado e removido,0
se não encontrado (nenhuma ação realizada) e-1
se um erro for encontrado. Não levantaKeyError
para chaves ausentes. Levanta umaTypeError
se 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. LevantaSystemError
se set não é uma instância deset
ou seu subtipo.
-
PyObject *PySet_Pop(PyObject *set)¶
- Retorna valor: Nova referência. Parte da ABI Estável.
Retorna uma nova referência a um objeto arbitrário no set e remove o objeto do set. Retorna
NULL
em caso de falha. LevantaKeyError
se o conjunto estiver vazio. Levanta umaSystemError
se set não for uma instância deset
ou seu subtipo.
-
int PySet_Clear(PyObject *set)¶
- Parte da ABI Estável.
Esvazia um conjunto existente de todos os elementos. Retorna
0
em caso de sucesso. Retorna-1
e levantaSystemError
se set não for uma instância deset
ou seu subtipo.