Αντικείμενα 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.

Επιστρέφει ένα νέο set, το οποίο περιέχει αντικείμενα που επιστρέφονται από το iterable. Το iterable μπορεί να είναι NULL για τη δημιουργία νέου κενού set. Επιστρέφει το νέο set σε περίπτωση επιτυχίας ή NULL σε περίπτωση αποτυχίας. Εγείρει TypeError αν το iterable δεν είναι στην πραγματικότητα επαναλήψιμο. Ο constructor είναι επίσης χρήσιμος για την αντιγραφή ενός set (c=set(s)).

PyObject *PyFrozenSet_New(PyObject *iterable)
Επιστρεφόμενη τιμή: New reference. Μέρος του Σταθερό ABI.

Επιστρέφει ένα νέο frozenset, το οποίο περιέχει αντικείμενα που επιστρέφει το iterable. Το iterable μπορεί να είναι NULL για τη δημιουργία νέου κενού frozenset. Επιστρέφει το νέο set σε περίπτωση επιτυχίας ή NULL σε περίπτωση αποτυχίας. Εγείρει TypeError, αν το iterable δεν είναι στην πραγματικότητα επαναλήψιμο.

Οι παρακάτω συναρτήσεις και μακροεντολές είναι διαθέσιμες για στιγμιότυπα των set ή frozenset ή στιγμιότυπα των υποτύπων τους.

Py_ssize_t PySet_Size(PyObject *anyset)
Μέρος του Σταθερό ABI.

Επιστρέφει το μήκος ενός αντικειμένου set ή frozenset. Ισοδυναμεί με το len(anyset). Εγείρει SystemError αν το anyset δεν είναι set, frozenset ή στιγμιότυπο υποτύπου.

Py_ssize_t PySet_GET_SIZE(PyObject *anyset)

Μορφή μακροεντολής της PySet_Size() χωρίς έλεγχο σφαλμάτων.

int PySet_Contains(PyObject *anyset, PyObject *key)
Μέρος του Σταθερό ABI.

Επιστρέφει 1 αν βρεθεί, 0 αν δεν βρεθεί και -1 αν προκύψει σφάλμα. Σε αντίθεση με τη μέθοδο __contains__() της Python, αυτή η συνάρτηση δεν μετατρέπει αυτόματα μη κατακερματίσιμα set σε προσωρινά frozenset. Εγείρει TypeError, αν το key είναι μη κατακερματίσιμο. Εγείρει SystemError, αν το anyset δεν είναι set, frozenset ή στιγμιότυπο υποτύπου.

int PySet_Add(PyObject *set, PyObject *key)
Μέρος του Σταθερό ABI.

Προσθέτει το key σε ένα στιγμιότυπο set. Λειτουργεί επίσης με στιγμιότυπα frozenset (όπως η PyTuple_SetItem(), μπορεί να χρησιμοποιηθεί για τη συμπλήρωση των τιμών ολοκαίνουριων frozenset πριν εκτεθούν σε άλλο κώδικα). Επιστρέφει 0 σε περίπτωση επιτυχίας ή -1 σε περίπτωση αποτυχίας. Εγείρει TypeError, αν το key είναι μη κατακερματίσιμο. Εγείρει MemoryError, αν δεν υπάρχει χώρος για επέκταση. Εγείρει SystemError, αν το set δεν είναι στιγμιότυπο του set ή υποτύπου του.

Οι παρακάτω συναρτήσεις είναι διαθέσιμες για στιγμιότυπα του set ή των υποτύπων του, αλλά όχι για στιγμιότυπα του frozenset ή των υποτύπων του.

int PySet_Discard(PyObject *set, PyObject *key)
Μέρος του Σταθερό ABI.

Επιστρέφει 1 αν βρεθεί και αφαιρεθεί, 0 αν δεν βρεθεί (χωρίς καμία ενέργεια) και -1 αν προκύψει σφάλμα. Δεν εγείρει KeyError για κλειδιά που λείπουν. Εγείρει TypeError, αν το key είναι μη κατακερματίσιμο. Σε αντίθεση με τη μέθοδο discard() της Python, αυτή η συνάρτηση δεν μετατρέπει αυτόματα μη κατακερματίσιμα set σε προσωρινά frozenset. Εγείρει SystemError αν το set δεν είναι στιγμιότυπο του set ή υποτύπου του.

PyObject *PySet_Pop(PyObject *set)
Επιστρεφόμενη τιμή: New reference. Μέρος του Σταθερό ABI.

Επιστρέφει μια νέα αναφορά σε ένα τυχαίο αντικείμενο του set και αφαιρεί το αντικείμενο από το set. Επιστρέφει NULL σε περίπτωση αποτυχίας. Εγείρει KeyError, αν το set είναι κενό. Εγείρει SystemError αν το set δεν είναι στιγμιότυπο του set ή υποτύπου του.

int PySet_Clear(PyObject *set)
Μέρος του Σταθερό ABI.

Αδειάζει ένα υπάρχον set από όλα τα στοιχεία του. Επιστρέφει 0 σε περίπτωση επιτυχίας. Επιστρέφει -1 και εγείρει SystemError, αν το set δεν είναι στιγμιότυπο του set ή υποτύπου του.