Set Objects¶
Dieser Abschnitt beschreibt die öffentliche API für set und frozenset Objekte. Jegliche Funktionalität, die hier nicht aufgeführt ist, wird am besten entweder über das abstrakte Objektprotokoll (einschließlich PyObject_CallMethod(), PyObject_RichCompareBool(), PyObject_Hash(), PyObject_Repr(), PyObject_IsTrue(), PyObject_Print() und PyObject_GetIter()) oder das abstrakte Zahlenprotokoll (einschließlich PyNumber_And(), PyNumber_Subtract(), PyNumber_Or(), PyNumber_Xor(), PyNumber_InPlaceAnd(), PyNumber_InPlaceSubtract(), PyNumber_InPlaceOr() und PyNumber_InPlaceXor()) angesprochen.
-
type PySetObject¶
Dieser Untertyp von
PyObjectwird verwendet, um die internen Daten fürsetundfrozensetObjekte zu speichern. Er ähnelt einemPyDictObjectin dem Sinne, dass er für kleine Sets eine feste Größe hat (ähnlich der Tupelspeicherung) und für mittelgroße und große Sets auf einen separaten, variabel großen Speicherblock zeigt (ähnlich der Listen dalloberfläche). Keines der Felder dieser Struktur sollte als öffentlich betrachtet werden und alle können sich ändern. Der gesamte Zugriff sollte über die dokumentierte API erfolgen und nicht durch Manipulation der Werte in der Struktur.
-
PyTypeObject PySet_Type¶
- Teil der Stable ABI.
Dies ist eine Instanz von
PyTypeObject, die den Pythonset-Typ repräsentiert.
-
PyTypeObject PyFrozenSet_Type¶
- Teil der Stable ABI.
Dies ist eine Instanz von
PyTypeObject, die den Pythonfrozenset-Typ repräsentiert.
Die folgenden Typprüfmakros funktionieren auf Zeigern zu beliebigen Python-Objekten. Ebenso arbeiten die Konstruktorfunktionen mit jedem iterierbaren Python-Objekt.
-
int PySet_Check(PyObject *p)¶
Gibt wahr zurück, wenn p ein
set-Objekt oder eine Instanz eines Subtyps ist. Diese Funktion ist immer erfolgreich.
-
int PyFrozenSet_Check(PyObject *p)¶
Gibt wahr zurück, wenn p ein
frozenset-Objekt oder eine Instanz eines Subtyps ist. Diese Funktion ist immer erfolgreich.
-
int PyAnySet_Check(PyObject *p)¶
Gibt wahr zurück, wenn p ein
set-Objekt, einfrozenset-Objekt oder eine Instanz eines Subtyps ist. Diese Funktion ist immer erfolgreich.
-
int PySet_CheckExact(PyObject *p)¶
Gibt wahr zurück, wenn p ein
set-Objekt, aber keine Instanz eines Subtyps ist. Diese Funktion ist immer erfolgreich.Hinzugefügt in Version 3.10.
-
int PyAnySet_CheckExact(PyObject *p)¶
Gibt wahr zurück, wenn p ein
set-Objekt oder einfrozenset-Objekt, aber keine Instanz eines Subtyps ist. Diese Funktion ist immer erfolgreich.
-
int PyFrozenSet_CheckExact(PyObject *p)¶
Gibt wahr zurück, wenn p ein
frozenset-Objekt, aber keine Instanz eines Subtyps ist. Diese Funktion ist immer erfolgreich.
-
PyObject *PySet_New(PyObject *iterable)¶
- Rückgabewert: Neue Referenz. Teil der Stabilen ABI.
Gibt ein neues
setzurück, das die vom iterable zurückgegebenen Objekte enthält. Der iterable kannNULLsein, um ein neues leeres Set zu erstellen. Gibt das neue Set im Erfolgsfall oderNULLim Fehlerfall zurück. LöstTypeErroraus, wenn iterable nicht tatsächlich iterierbar ist. Der Konstruktor ist auch nützlich zum Kopieren eines Sets (c=set(s)).
-
PyObject *PyFrozenSet_New(PyObject *iterable)¶
- Rückgabewert: Neue Referenz. Teil der Stabilen ABI.
Gibt ein neues
frozensetzurück, das die vom iterable zurückgegebenen Objekte enthält. Der iterable kannNULLsein, um ein neues leeres Frozenset zu erstellen. Gibt das neue Set im Erfolgsfall oderNULLim Fehlerfall zurück. LöstTypeErroraus, wenn iterable nicht tatsächlich iterierbar ist.
Die folgenden Funktionen und Makros sind für Instanzen von set oder frozenset oder Instanzen ihrer Subtypen verfügbar.
-
Py_ssize_t PySet_Size(PyObject *anyset)¶
- Teil der Stable ABI.
Gibt die Länge eines
set- oderfrozenset-Objekts zurück. Entsprichtlen(anyset). LöstSystemErroraus, wenn anyset keinset,frozensetoder eine Instanz eines Subtyps ist.
-
Py_ssize_t PySet_GET_SIZE(PyObject *anyset)¶
Makroform von
PySet_Size()ohne Fehlerprüfung.
-
int PySet_Contains(PyObject *anyset, PyObject *key)¶
- Teil der Stable ABI.
Gibt
1zurück, wenn gefunden,0, wenn nicht gefunden, und-1, wenn ein Fehler auftritt. Im Gegensatz zur Python-Methode__contains__()konvertiert diese Funktion unveränderbare Sets nicht automatisch in temporäre Frozensets. LöstTypeErroraus, wenn der key unveränderbar ist. LöstSystemErroraus, wenn anyset keinset,frozensetoder eine Instanz eines Subtyps ist.
-
int PySet_Add(PyObject *set, PyObject *key)¶
- Teil der Stable ABI.
Fügt key zu einer
set-Instanz hinzu. Funktioniert auch mitfrozenset-Instanzen (wiePyTuple_SetItem()kann es verwendet werden, um die Werte brandneuer Frozensets zu befüllen, bevor sie anderen Code ausgesetzt werden). Gibt0im Erfolgsfall oder-1im Fehlerfall zurück. LöstTypeErroraus, wenn key unveränderbar ist. LöstMemoryErroraus, wenn kein Platz zum Wachsen vorhanden ist. LöstSystemErroraus, wenn set keine Instanz vonsetoder dessen Subtyp ist.
Die folgenden Funktionen sind für Instanzen von set oder deren Subtypen verfügbar, jedoch nicht für Instanzen von frozenset oder deren Subtypen.
-
int PySet_Discard(PyObject *set, PyObject *key)¶
- Teil der Stable ABI.
Gibt
1zurück, wenn gefunden und entfernt,0, wenn nicht gefunden (keine Aktion ausgeführt), und-1, wenn ein Fehler auftritt. Löst bei fehlenden Schlüsseln keineKeyErroraus. LöstTypeErroraus, wenn der key unveränderbar ist. Im Gegensatz zur Python-Methodediscard()konvertiert diese Funktion unveränderbare Sets nicht automatisch in temporäre Frozensets. LöstSystemErroraus, wenn set keine Instanz vonsetoder dessen Subtyp ist.
-
PyObject *PySet_Pop(PyObject *set)¶
- Rückgabewert: Neue Referenz. Teil der Stabilen ABI.
Gibt eine neue Referenz auf ein beliebiges Objekt im set zurück und entfernt das Objekt aus dem set. Gibt
NULLim Fehlerfall zurück. LöstKeyErroraus, wenn das Set leer ist. LöstSystemErroraus, wenn set keine Instanz vonsetoder dessen Subtyp ist.
-
int PySet_Clear(PyObject *set)¶
- Teil der Stable ABI.
Leert ein bestehendes Set von allen Elementen. Gibt
0im Erfolgsfall zurück. Gibt-1zurück und löstSystemErroraus, wenn set keine Instanz vonsetoder dessen Subtyp ist.