Ställ in objekt

Detta avsnitt beskriver det publika API:et för objekten set och frozenset. All funktionalitet som inte listas nedan nås bäst med antingen det abstrakta objektprotokollet (inklusive PyObject_CallMethod(), PyObject_RichCompareBool(), PyObject_Hash(), PyObject_Repr(), PyObject_IsTrue(), PyObject_Print() och PyObject_GetIter()) eller det abstrakta nummerprotokollet (inklusive PyNumber_And(), PyNumber_Subtract(), PyNumber_Or(), PyNumber_Xor(), PyNumber_InPlaceAnd(), PyNumber_InPlaceSubtract(), PyNumber_InPlaceOr(), och PyNumber_InPlaceXor()).

type PySetObject

Denna subtyp av PyObject används för att hålla interna data för både set och frozenset objekt. Det är som ett PyDictObject i det att det har en fast storlek för små uppsättningar (ungefär som tuple-lagring) och kommer att peka på ett separat minnesblock med variabel storlek för medelstora och stora uppsättningar (ungefär som listlagring). Inget av fälten i den här strukturen ska betraktas som offentligt och alla kan ändras. All åtkomst bör ske genom det dokumenterade API:et snarare än genom att manipulera värdena i strukturen.

PyTypeObject PySet_Type
En del av Stabil ABI.

Detta är en instans av PyTypeObject som representerar Python set-typen.

PyTypeObject PyFrozenSet_Type
En del av Stabil ABI.

Detta är en instans av PyTypeObject som representerar Python-typen frozenset.

Följande makron för typkontroll fungerar på pekare till alla Python-objekt. På samma sätt fungerar konstruktorfunktionerna med alla itererbara Python-objekt.

int PySet_Check(PyObject *p)

Returnerar true om p är ett set-objekt eller en instans av en subtyp. Denna funktion lyckas alltid.

int PyFrozenSet_Check(PyObject *p)

Returnerar true om p är ett frozenset-objekt eller en instans av en subtyp. Denna funktion lyckas alltid.

int PyAnySet_Check(PyObject *p)

Returnerar true om p är ett set-objekt, ett frozenset-objekt eller en instans av en subtyp. Denna funktion lyckas alltid.

int PySet_CheckExact(PyObject *p)

Returnerar true om p är ett set-objekt men inte en instans av en subtyp. Denna funktion lyckas alltid.

Tillagd i version 3.10.

int PyAnySet_CheckExact(PyObject *p)

Returnerar true om p är ett set-objekt eller ett frozenset-objekt men inte en instans av en subtyp. Denna funktion lyckas alltid.

int PyFrozenSet_CheckExact(PyObject *p)

Returnerar true om p är ett frozenset-objekt men inte en instans av en subtyp. Denna funktion lyckas alltid.

PyObject *PySet_New(PyObject *iterable)
Returnera värde: Ny referens. En del av Stabil ABI.

Returnerar en ny set som innehåller objekt som returneras av iterable. iterable kan vara NULL för att skapa en ny tom uppsättning. Returnerar den nya uppsättningen vid framgång eller NULL vid misslyckande. Utlöser TypeError om iterable inte är en iterabel. Konstruktören är också användbar för att kopiera en uppsättning (c=set(s)).

PyObject *PyFrozenSet_New(PyObject *iterable)
Returnera värde: Ny referens. En del av Stabil ABI.

Returnerar en ny frozenset som innehåller objekt som returnerats av iterable. iterable kan vara NULL för att skapa en ny tom frozenset. Returnerar den nya uppsättningen vid framgång eller NULL vid misslyckande. Utlöser TypeError om iterable inte är en iterable.

Följande funktioner och makron är tillgängliga för instanser av set eller frozenset eller instanser av deras subtyper.

Py_ssize_t PySet_Size(PyObject *anyset)
En del av Stabil ABI.

Returnerar längden på ett set eller frozenset objekt. Ekvivalent med len(anyset). Utlöser ett SystemError om anyset inte är en set, frozenset, eller en instans av en subtyp.

Py_ssize_t PySet_GET_SIZE(PyObject *anyset)

Makroform av PySet_Size() utan felkontroll.

int PySet_Contains(PyObject *anyset, PyObject *key)
En del av Stabil ABI.

Returnerar 1 om den hittas, 0 om den inte hittas och -1 om ett fel inträffar. Till skillnad från Pythons metod __contains__() konverterar denna funktion inte automatiskt ohashbara uppsättningar till tillfälliga frozensets. Orsakar ett TypeError om nyckeln är oashbar. Utlös SystemError om anyset inte är en set, frozenset eller en instans av en subtyp.

int PySet_Add(PyObject *set, PyObject *key)
En del av Stabil ABI.

Lägg till nyckel till en set-instans. Fungerar även med frozenset-instanser (som PyTuple_SetItem() kan den användas för att fylla i värdena i helt nya frozensets innan de exponeras för annan kod). Returnerar 0 vid framgång eller -1 vid misslyckande. Ger ett TypeError om nyckeln inte är hashbar. Ger ett MemoryError om det inte finns utrymme att växa. Ge upphov till ett SystemError om set inte är en instans av set eller dess subtyp.

Följande funktioner är tillgängliga för instanser av set eller dess subtyper men inte för instanser av frozenset eller dess subtyper.

int PySet_Discard(PyObject *set, PyObject *key)
En del av Stabil ABI.

Returnerar 1 om nyckeln hittats och tagits bort, 0 om den inte hittats (ingen åtgärd vidtagen) och -1 om ett fel uppstått. Ger inte upphov till KeyError för saknade nycklar. Ger upphov till ett TypeError om nyckeln inte är hashbar. Till skillnad från Pythons discard()-metod konverterar denna funktion inte automatiskt ohashbara uppsättningar till tillfälliga frozensets. Utlöser SystemError om set inte är en instans av set eller dess subtyp.

PyObject *PySet_Pop(PyObject *set)
Returnera värde: Ny referens. En del av Stabil ABI.

Returnerar en ny referens till ett godtyckligt objekt i set, och tar bort objektet från set. Returnerar NULL om den misslyckas. Ger upphov till KeyError om uppsättningen är tom. Utlöser ett SystemError om set inte är en instans av set eller dess subtyp.

int PySet_Clear(PyObject *set)
En del av Stabil ABI.

Tömmer en befintlig uppsättning på alla element. Returnerar 0 vid framgång. Returnerar -1 och ger SystemError om set inte är en instans av set eller dess subtyp.