Μάθετε τη δομή δεδομένων Python Set/Frozenset – Μέρος 4


Σε αυτό το Μέρος 4 της σειράς Python Data Structure, θα συζητήσουμε τι είναι ένα σύνολο, πώς διαφέρει από άλλες δομές δεδομένων στην python, πώς να δημιουργήσετε αντικείμενα συνόλου, να διαγράψετε αντικείμενα συνόλου και μεθόδους συνόλου αντικειμένων .

  • Ένα σύνολο αντικειμένων είναι μια μη ταξινομημένη συλλογή από διακριτά αντικείμενα με δυνατότητα κατακερματισμού.
  • Το Set αφαιρεί αυτόματα τα διπλά στοιχεία από το αντικείμενο.
  • Δεδομένου ότι τα αντικείμενα συνόλου δεν είναι ταξινομημένα, δεν υποστηρίζεται καμία λειτουργία ευρετηρίασης και κοπής.

Αυτήν τη στιγμή υπάρχουν δύο ενσωματωμένοι τύποι σετ.

  1. set – Δεδομένου ότι είναι μεταβλητό, δεν έχει τιμή κατακερματισμού και δεν μπορεί να χρησιμοποιηθεί ούτε ως κλειδί λεξικού ούτε ως στοιχείο άλλου συνόλου.
  2. frozenset – Αμετάβλητο και κατακερματιζόμενο – το περιεχόμενό του δεν μπορεί να αλλάξει μετά τη δημιουργία του. Μπορεί, επομένως, να χρησιμοποιηθεί ως κλειδί λεξικού ή ως στοιχείο άλλου συνόλου.

Κατασκευή αντικειμένου συνόλου

Δημιουργήστε ένα σύνολο χρησιμοποιώντας τη μέθοδο κατασκευής “set()” ή χρησιμοποιώντας σγουρά άγκιστρα με κόμμα που χωρίζει τα στοιχεία “{a,b,c}”.

ΣΗΜΕΙΩΣΗ: δεν μπορείτε να δημιουργήσετε ένα αντικείμενο συνόλου μέσω κενών αγκύλων, καθώς θα δημιουργήσει αντικείμενο λεξικού.

Ορισμός μεθόδων

Χρησιμοποιήστε την ενσωματωμένη συνάρτηση “dir()” για να παραθέσετε τις διαθέσιμες μεθόδους και χαρακτηριστικά συνόλου.

Προσθήκη στοιχείων στο Set Object

Όπως αναφέρθηκε ήδη, το σύνολο είναι ένας μεταβλητός τύπος. Μπορείτε να προσθέσετε, να διαγράψετε, να ενημερώσετε το σύνολο του αντικειμένου σας μόλις δημιουργηθεί.

Ας μιλήσουμε για δύο σετ μεθόδους προσθήκη και ενημέρωση.

  • μέθοδος προσθήκης(elem) – Αυτή η μέθοδος προσθέτει ένα μεμονωμένο στοιχείο σε ένα αντικείμενο συνόλου.
  • μέθοδος ενημέρωσης(*άλλες) – Αυτή η μέθοδος προσθέτει πολλά στοιχεία σε ένα αντικείμενο συνόλου. Μπορείτε να μεταβιβάσετε μεταβλητά/αμετάβλητα αντικείμενα ως όρισμα στη μέθοδο ενημέρωσης.

ΣΗΜΕΙΩΣΗ: Τα διπλότυπα θα αφαιρεθούν αυτόματα.

Αφαίρεση/Εκκαθάριση στοιχείων από ένα σύνολο αντικειμένων

Όπως έχετε δει προηγουμένως σε άλλα θέματα δομών δεδομένων (λίστα, πλειάδες, λεξικό), για το σύνολο μπορείτε επίσης να χρησιμοποιήσετε την ενσωματωμένη λέξη-κλειδί “del” για να διαγράψετε το αντικείμενο συνόλου από τον χώρο ονομάτων (δηλ. Μνήμη).

Παρακάτω είναι οι μέθοδοι για τη ρύθμιση αντικειμένων για την αφαίρεση στοιχείων.

  • clear() – Θα διαγράψει όλα τα στοιχεία που καθιστούν το σύνολο κενό. Αυτή η μέθοδος clear() είναι διαθέσιμη σε άλλες δομές δεδομένων που παρέχουν την ίδια λειτουργικότητα.
  • pop() – Καταργεί αυθαίρετα στοιχεία.
  • discard(elem) – Εάν το στοιχείο δεν βρεθεί στο αντικείμενο συνόλου, τότε η μέθοδος “discard()” δεν θα προκαλέσει κανένα σφάλμα.
  • remove(elem) – Το ίδιο με τη μέθοδο “discard()”, αλλά θα εμφανίσει KeyError όταν δεν βρεθεί ένα στοιχείο.

Ορισμός Λειτουργιών

Το Σετ παρέχει μεθόδους για την εκτέλεση μαθηματικών πράξεων όπως τομή, ένωση, διαφορά και συμμετρική διαφορά. Θυμάστε το "διάγραμμα Venn" από τις μέρες του γυμνασίου σας;

Θα ρίξουμε μια ματιά στις παρακάτω μεθόδους για το πώς εκτελούνται οι μαθηματικές πράξεις.

  • ένωση
  • σημείο τομής
  • intersection_update
  • συμμετρική_διαφορά
  • symmetric_difference_update
  • διαφορά
  • διαφορά_ενημέρωση
  • είναι ασυνεχής
  • υποσύνολο
  • εκδοτικό σύνολο

Union, Intersectio, Difference, Symmetric_Difference

  • union(*other) – Επιστρέψτε ένα νέο σύνολο με στοιχεία από το σετ και όλα τα άλλα.
  • τομή(*other) – Επιστρέψτε ένα νέο σύνολο με στοιχεία κοινά για το σύνολο και όλα τα άλλα.
  • διαφορά(*άλλοι) – Επιστρέψτε ένα νέο σύνολο με στοιχεία στο σύνολο που δεν υπάρχουν στα άλλα.
  • symmetric_difference(other) – Επιστρέψτε ένα νέο σύνολο με στοιχεία είτε στο σύνολο είτε σε άλλα αλλά όχι και στα δύο.

Intersection_Update

intersection_update(*others) – Ενημερώστε το σύνολο, διατηρώντας μόνο τα στοιχεία που βρίσκονται σε αυτό και όλα τα άλλα.

Ενημέρωση διαφοράς

difference_update(*others) – Ενημερώστε το σύνολο, διατηρώντας μόνο στοιχεία που βρίσκονται σε αυτό και όλα τα άλλα.

Symmetric_Difference_Update

symmetric_difference_update(other) – Ενημερώστε το σύνολο, διατηρώντας μόνο στοιχεία που βρίσκονται σε ένα ένα σύνολο,                                                                      {101}

Isdisjoint, Issubset, Issuperset

  • isdisjoint(other) – Επιστροφή True αν το σετ δεν έχει στοιχεία κοινά με άλλο. Τα σύνολα είναι ασύνδετα αν και μόνο αν η τομή τους είναι το κενό σετ.
  • issubset() – Δοκιμάστε αν κάθε στοιχείο στο σύνολο είναι σε άλλο.
  • issuperset() – Δοκιμάστε αν κάθε στοιχείο στο άλλο είναι στο  σετ.

Μέθοδος Copy().

Μπορείτε να δημιουργήσετε ένα πανομοιότυπο αντίγραφο του υπάρχοντος αντικειμένου συνόλου χρησιμοποιώντας τη μέθοδο copy(). Αυτή η μέθοδος είναι επίσης διαθέσιμη για άλλους τύπους δομών δεδομένων όπως λίστα, λεξικό κ.λπ…

Διαγράψτε το καθορισμένο αντικείμενο από τον χώρο ονομάτων χρησιμοποιώντας μια ενσωματωμένη λέξη-κλειδί “del”.

Παγωμένο Σετ

  • Το σετ Frozen είναι αμετάβλητου τύπου. Αφού κατασκευαστεί, δεν μπορείτε να προσθέσετε, να αφαιρέσετε ή να ενημερώσετε στοιχεία από τη λίστα.
  • Το παγωμένο σύνολο που είναι αμετάβλητο μπορεί να κατακερματιστεί, μπορεί να χρησιμοποιηθεί ως "κλειδί" για λεξικά ή στοιχεία για άλλο αντικείμενο συνόλου.
  • Το Frozen set κατασκευάζεται χρησιμοποιώντας τη συνάρτηση “frozenset()”.
  • Το Frozen set παρέχει το ίδιο σύνολο μεθόδων σε σύγκριση με το "set", όπως union(), intersection, copy(), isdisjoint() κ.λπ.

Περίληψη

Σε αυτό το άρθρο έχετε δει τι έχει οριστεί, διαφορά μεταξύ σετ και παγωμένου συνόλου, πώς να δημιουργήσετε και να αποκτήσετε πρόσβαση στα στοιχεία συνόλου, μεθόδους ρύθμισης κ.λπ.