Αντικείμενα Set¶
Αυτή η ενότητα περιγράφει το δημόσιο API για τα αντικείμενα set και frozenset. Οποιαδήποτε λειτουργικότητα δεν αναφέρεται παρακάτω είναι προτιμότερο να προσπελαστεί είτε μέσω του αφαιρετικού πρωτοκόλλου αντικειμένων (συμπεριλαμβανομένων των PyObject_CallMethod(), PyObject_RichCompareBool(), PyObject_Hash(), PyObject_Repr(), PyObject_IsTrue(), PyObject_Print() και PyObject_GetIter()) είτε μέσω του αφαιρετικού αριθμητικού πρωτοκόλλου (συμπεριλαμβανομένων των PyNumber_And(), PyNumber_Subtract(), PyNumber_Or(), PyNumber_Xor(), PyNumber_InPlaceAnd(), PyNumber_InPlaceSubtract(), PyNumber_InPlaceOr() και PyNumber_InPlaceXor()).
-
type PySetObject¶
Αυτός ο υποτύπος του
PyObjectχρησιμοποιείται για την αποθήκευση των εσωτερικών δεδομένων τόσο για τα αντικείμεναsetόσο και για τα αντικείμεναfrozenset. Μοιάζει με τοPyDictObjectστο ότι έχει σταθερό μέγεθος για μικρά set (παρόμοια με την αποθήκευση tuple) και δείχνει σε ένα ξεχωριστό, μεταβλητού μεγέθους μπλοκ μνήμης για μεσαία και μεγάλα set (παρόμοια με την αποθήκευση list). Κανένα από τα πεδία αυτής της δομής δεν θεωρείται δημόσιο και όλα υπόκεινται σε αλλαγές. Κάθε πρόσβαση πρέπει να γίνεται μέσω του τεκμηριωμένου API και όχι μέσω απευθείας τροποποίησης των τιμών της δομής.
-
PyTypeObject PySet_Type¶
- Μέρος του Σταθερό ABI.
Αυτό είναι ένα στιγμιότυπο του
PyTypeObjectπου αντιπροσωπεύει τον τύποsetτης Python.
-
PyTypeObject PyFrozenSet_Type¶
- Μέρος του Σταθερό ABI.
Αυτό είναι ένα στιγμιότυπο του
PyTypeObjectπου αντιπροσωπεύει τον τύποfrozensetτης Python.
Οι παρακάτω μακροεντολές ελέγχου τύπου λειτουργούν σε δείκτες προς οποιοδήποτε αντικείμενο Python. Ομοίως, οι συναρτήσεις constructor λειτουργούν με οποιοδήποτε επαναλήψιμο αντικείμενο Python.
-
int PySet_Check(PyObject *p)¶
Επιστρέφει true αν το p είναι αντικείμενο
setή στιγμιότυπο υποτύπου. Η συνάρτηση αυτή επιτυγχάνει πάντα.
-
int PyFrozenSet_Check(PyObject *p)¶
Επιστρέφει true αν το p είναι αντικείμενο
frozensetή στιγμιότυπο υποτύπου. Η συνάρτηση αυτή επιτυγχάνει πάντα.
-
int PyAnySet_Check(PyObject *p)¶
Επιστρέφει true αν το p είναι αντικείμενο
set, αντικείμενοfrozensetή στιγμιότυπο υποτύπου. Η συνάρτηση αυτή επιτυγχάνει πάντα.
-
int PySet_CheckExact(PyObject *p)¶
Επιστρέφει true αν το p είναι αντικείμενο
setαλλά όχι στιγμιότυπο υποτύπου. Η συνάρτηση αυτή επιτυγχάνει πάντα.Added in version 3.10.
-
int PyAnySet_CheckExact(PyObject *p)¶
Επιστρέφει true αν το p είναι αντικείμενο
setή αντικείμενοfrozenset, αλλά όχι στιγμιότυπο υποτύπου. Η συνάρτηση αυτή επιτυγχάνει πάντα.
-
int PyFrozenSet_CheckExact(PyObject *p)¶
Επιστρέφει true αν το p είναι αντικείμενο
frozenset, αλλά όχι στιγμιότυπο υποτύπου. Η συνάρτηση αυτή επιτυγχάνει πάντα.
-
PyObject *PySet_New(PyObject *iterable)¶
- Επιστρεφόμενη τιμή: New reference. Μέρος του Σταθερό ABI. Thread safety: Safe for concurrent use on the same object.
Επιστρέφει ένα νέο
set, το οποίο περιέχει αντικείμενα που επιστρέφονται από το iterable. Το iterable μπορεί να είναιNULLγια τη δημιουργία νέου κενού set. Επιστρέφει το νέο set σε περίπτωση επιτυχίας ήNULLσε περίπτωση αποτυχίας. ΕγείρειTypeErrorαν το iterable δεν είναι στην πραγματικότητα επαναλήψιμο. Ο constructor είναι επίσης χρήσιμος για την αντιγραφή ενός set (c=set(s)).Σημείωση
The operation is atomic on free threading when iterable is a
set,frozenset,dictorfrozendict.
-
PyObject *PyFrozenSet_New(PyObject *iterable)¶
- Επιστρεφόμενη τιμή: New reference. Μέρος του Σταθερό ABI. Thread safety: Safe for concurrent use on the same object.
Επιστρέφει ένα νέο
frozenset, το οποίο περιέχει αντικείμενα που επιστρέφει το iterable. Το iterable μπορεί να είναιNULLγια τη δημιουργία νέου κενού frozenset. Επιστρέφει το νέο set σε περίπτωση επιτυχίας ήNULLσε περίπτωση αποτυχίας. ΕγείρειTypeError, αν το iterable δεν είναι στην πραγματικότητα επαναλήψιμο.Σημείωση
The operation is atomic on free threading when iterable is a
set,frozenset,dictorfrozendict.
Οι παρακάτω συναρτήσεις και μακροεντολές είναι διαθέσιμες για στιγμιότυπα των set ή frozenset ή στιγμιότυπα των υποτύπων τους.
-
Py_ssize_t PySet_Size(PyObject *anyset)¶
- Μέρος του Σταθερό ABI. Thread safety: Atomic.
Επιστρέφει το μήκος ενός αντικειμένου
setήfrozenset. Ισοδυναμεί με τοlen(anyset). ΕγείρειSystemErrorαν το anyset δεν είναιset,frozensetή στιγμιότυπο υποτύπου.
-
Py_ssize_t PySet_GET_SIZE(PyObject *anyset)¶
- Thread safety: Atomic.
Μορφή μακροεντολής της
PySet_Size()χωρίς έλεγχο σφαλμάτων.
-
int PySet_Contains(PyObject *anyset, PyObject *key)¶
- Μέρος του Σταθερό ABI. Thread safety: Safe for concurrent use on the same object.
Επιστρέφει
1αν βρεθεί,0αν δεν βρεθεί και-1αν προκύψει σφάλμα. Σε αντίθεση με τη μέθοδο__contains__()της Python, αυτή η συνάρτηση δεν μετατρέπει αυτόματα μη κατακερματίσιμα set σε προσωρινά frozenset. ΕγείρειTypeError, αν το key είναι μη κατακερματίσιμο. ΕγείρειSystemError, αν το anyset δεν είναιset,frozensetή στιγμιότυπο υποτύπου.
-
int PySet_Add(PyObject *set, PyObject *key)¶
- Μέρος του Σταθερό ABI. Thread safety: Safe for concurrent use on the same object.
Προσθέτει το key σε ένα στιγμιότυπο
set. Λειτουργεί επίσης με στιγμιότυπαfrozenset(όπως ηPyTuple_SetItem(), μπορεί να χρησιμοποιηθεί για τη συμπλήρωση των τιμών ολοκαίνουριων frozenset πριν εκτεθούν σε άλλο κώδικα). Επιστρέφει0σε περίπτωση επιτυχίας ή-1σε περίπτωση αποτυχίας. ΕγείρειTypeError, αν το key είναι μη κατακερματίσιμο. ΕγείρειMemoryError, αν δεν υπάρχει χώρος για επέκταση. ΕγείρειSystemError, αν το set δεν είναι στιγμιότυπο τουsetή υποτύπου του.
Οι παρακάτω συναρτήσεις είναι διαθέσιμες για στιγμιότυπα του set ή των υποτύπων του, αλλά όχι για στιγμιότυπα του frozenset ή των υποτύπων του.
-
int PySet_Discard(PyObject *set, PyObject *key)¶
- Μέρος του Σταθερό ABI. Thread safety: Safe for concurrent use on the same object.
Return
1if found and removed,0if not found (no action taken), and-1if an error is encountered. Does not raiseKeyErrorfor missing keys. Raise aTypeErrorif the key is unhashable. Unlike the Pythondiscard()method, this function does not automatically convert unhashable sets into temporary frozensets. RaiseSystemErrorif set is not an instance ofsetor its subtype.
-
PyObject *PySet_Pop(PyObject *set)¶
- Επιστρεφόμενη τιμή: New reference. Μέρος του Σταθερό ABI. Thread safety: Atomic.
Επιστρέφει μια νέα αναφορά σε ένα τυχαίο αντικείμενο του set και αφαιρεί το αντικείμενο από το set. Επιστρέφει
NULLσε περίπτωση αποτυχίας. ΕγείρειKeyError, αν το set είναι κενό. ΕγείρειSystemErrorαν το set δεν είναι στιγμιότυπο τουsetή υποτύπου του.
-
int PySet_Clear(PyObject *set)¶
- Μέρος του Σταθερό ABI. Thread safety: Atomic.
Αδειάζει ένα υπάρχον set από όλα τα στοιχεία του. Επιστρέφει
0σε περίπτωση επιτυχίας. Επιστρέφει-1και εγείρειSystemError, αν το set δεν είναι στιγμιότυπο τουsetή υποτύπου του.Σημείωση
In the free-threaded build, the set is emptied before its entries are cleared, so other threads will observe an empty set rather than intermediate states.
Deprecated API¶
-
PySet_MINSIZE¶
A constant representing the size of an internal preallocated table inside
PySetObjectinstances.This is documented solely for completeness, as there are no guarantees that a given version of CPython uses preallocated tables with a fixed size. In code that does not deal with unstable set internals,
PySet_MINSIZEcan be replaced with a small constant like8.If looking for the size of a set, use
PySet_Size()instead.Soft deprecated since version 3.14.