Τα σύνολα (sets) στην Python είναι μια δομή δεδομένων που αποθηκεύει μη διατεταγμένα και μοναδικά στοιχεία. Αυτό σημαίνει ότι δεν υπάρχει συγκεκριμένη σειρά για τα στοιχεία και κάθε στοιχείο εμφανίζεται μόνο μία φορά στο σύνολο. Επιπλέον, τα σύνολα είναι αμετάβλητα, πράγμα που σημαίνει ότι δεν μπορούν να τροποποιηθούν τα στοιχεία τους μετά τη δημιουργία τους.
Ένα από τα βασικά χαρακτηριστικά των συνόλων είναι η δυνατότητα εκτέλεσης μαθηματικών πράξεων πάνω τους. Μπορείτε να εκτελέσετε τις πράξεις της ένωσης, της τομής και της διαφοράς μεταξύ συνόλων. Η ένωση ενός συνόλου περιλαμβάνει όλα τα μοναδικά στοιχεία από τα αρχικά σύνολα, η τομή περιλαμβάνει τα κοινά στοιχεία ανάμεσα στα σύνολα και η διαφορά περιλαμβάνει τα στοιχεία που υπάρχουν σε ένα σύνολο αλλά όχι στο άλλο.
Η χρήση των συνόλων μπορεί να είναι χρήσιμη όταν χρειάζεστε μια δομή δεδομένων που περιέχει μοναδικά στοιχεία και όταν θέλετε να εκτελέσετε μαθηματικές πράξεις πάνω σε αυτά.
Για να δημιουργήσετε ένα σύνολο στην Python, μπορείτε να χρησιμοποιήσετε τις αγκύλες {} και να αναγράψετε τις τιμές του συνόλου μεταξύ τους, χωρισμένες με κόμματα.
my_set = {"apple", "banana", "cherry"} # Δημιουργία ενός συνόλου με τις τιμές "apple", "banana" και "cherry"
Σε αυτόν τον κώδικα, δημιουργείται ένα σύνολο με τις τρεις τιμές “apple”, “banana” και “cherry”. Οι τιμές αυτές είναι διαχωρισμένες με κόμματα και περικλείονται ανάμεσα σε αγκύλες {}. Τα σύνολα στην Python είναι μια δομή δεδομένων που περιέχει μοναδικά στοιχεία και δεν διατηρεί τη σειρά των στοιχείων.
Στην Python, μπορείτε επίσης να χρησιμοποιήσετε την ενσωματωμένη συνάρτηση set()
για να δημιουργήσετε ένα σύνολο. Το σύνολο είναι μια μη ταξινομημένη συλλογή μοναδικών στοιχείων, όπου δεν επιτρέπονται διπλότυπες τιμές. Μπορείτε να περάσετε μια λίστα, μια πλειάδα ή μια άλλη ακολουθία στη συνάρτηση set()
για να δημιουργήσετε ένα σύνολο με τα μοναδικά στοιχεία από αυτήν την ακολουθία. Εδώ έχουμε ένα παράδειγμα:
my_list = [1, 2, 3, 2, 4, 1, 5] my_set = set(my_list) print(my_set) # Εκτυπώνει '{1, 2, 3, 4, 5}'
Η συνάρτηση set()
αφαιρεί τυχόν διπλότυπες τιμές και επιστρέφει ένα σύνολο με τα μοναδικά στοιχεία της ακολουθίας.
Επειδή τα σύνολα είναι αμετάβλητα και δεν διατηρούν την τάξη των στοιχείων τους, δεν μπορείτε να προσπελάσετε τα στοιχεία του συνόλου με βάση το ευρετήριό τους. Ωστόσο, μπορείτε να χρησιμοποιήσετε ένα for loop για να επαναλάβετε τα στοιχεία του συνόλου και να εκτελέσετε επιθυμητές ενέργειες σε κάθε στοιχείο. Κατά τη διάρκεια του loop, κάθε στοιχείο του συνόλου θα ανατίθεται στη μεταβλητή που καθορίζετε, επιτρέποντάς σας να το προσπελάσετε και να εκτελέσετε τις απαραίτητες ενέργειες.
my_set = {"apple", "banana", "cherry"} # Επανάληψη μέσω των στοιχείων του συνόλου for item in my_set: print(item) # Εκτύπωση του κάθε στοιχείου
Το παραπάνω κομμάτι κώδικα δημιουργεί ένα σύνολο με τρία στοιχεία (“apple”, “banana”, “cherry”). Στη συνέχεια, χρησιμοποιεί έναν βρόχο for
για να επαναλάβει τα στοιχεία του συνόλου. Κάθε στοιχείο ανατίθεται στη μεταβλητή item
, και στη συνέχεια εκτυπώνεται. Έτσι, θα εμφανιστούν στην οθόνη οι τρεις λέξεις “apple”, “banana” και “cherry”.
Για να προσθέσετε ένα στοιχείο σε ένα σύνολο στην Python, μπορείτε να χρησιμοποιήσετε τη μέθοδο add().
my_set = {"apple", "banana", "cherry"} my_set.add("orange") print(my_set) # Εκτυπώνει "{'apple', 'banana', 'cherry', 'orange'}"
Η μέθοδος add()
χρησιμοποιείται για να προσθέσει ένα στοιχείο σε ένα σύνολο. Στο παραπάνω παράδειγμα, προσθέτουμε το στοιχείο “orange” στο σύνολο my_set
και εκτυπώνουμε το ενημερωμένο σύνολο. Το αποτέλεσμα θα είναι {'apple', 'banana', 'cherry', 'orange'}
.
[adinserter block=”2″]
Για να αφαιρέσετε ένα στοιχείο από ένα σύνολο στην Python, μπορείτε να χρησιμοποιήσετε τις μεθόδους remove()
και discard()
. Οι δύο αυτές μέθοδοι λειτουργούν με παρόμοιο τρόπο, αλλά υπάρχει μια σημαντική διαφορά.
Η μέθοδος remove()
αφαιρεί το συγκεκριμένο στοιχείο από το σύνολο. Εάν το στοιχείο δεν υπάρχει στο σύνολο, η μέθοδος θα προκαλέσει ένα KeyError
. Αυτό σημαίνει ότι πρέπει να είστε σίγουροι ότι το στοιχείο υπάρχει πριν χρησιμοποιήσετε τη μέθοδο remove()
.
Από την άλλη πλευρά, η μέθοδος discard()
αφαιρεί το συγκεκριμένο στοιχείο από το σύνολο, αν υπάρχει. Εάν το στοιχείο δεν υπάρχει, η μέθοδος απλά δεν κάνει τίποτα και δεν προκαλεί κανένα σφάλμα. Αυτό σας επιτρέπει να αφαιρέσετε ένα στοιχείο από ένα σύνολο χωρίς να χρειάζεται να ελέγξετε αν υπάρχει πρώτα.
Επιλέξτε τη μέθοδο που ταιριάζει καλύτερα στις ανάγκες σας, ανάλογα με το αν θέλετε να ελέγξετε την ύπαρξη του στοιχείου πριν την αφαίρεση ή όχι.
my_set = {"apple", "banana", "cherry"} my_set.remove("banana") # Αφαιρεί το στοιχείο "banana" από το σύνολο print(my_set) # Εκτυπώνει "{'apple', 'cherry'}" my_set = {"apple", "banana", "cherry"} my_set.discard("banana") # Αφαιρεί το στοιχείο "banana" από το σύνολο, αν υπάρχει print(my_set) # Εκτυπώνει "{'apple', 'cherry'}"
Στον παραπάνω κώδικα, χρησιμοποιούμε ένα σύνολο (my_set
) που περιέχει τρία στοιχεία: “apple”, “banana” και “cherry”.
Στην πρώτη εντολή, χρησιμοποιούμε τη μέθοδο remove()
για να αφαιρέσουμε το στοιχείο “banana” από το σύνολο. Η μέθοδος remove()
αναζητά το στοιχείο που προσδιορίζουμε και το αφαιρεί από το σύνολο. Στη συγκεκριμένη περίπτωση, η εκτέλεση της εντολής θα αφαιρέσει το “banana”, καθώς το στοιχείο αυτό υπάρχει στο σύνολο. Έπειτα, εκτυπώνουμε το ενημερωμένο σύνολο, που περιέχει μόνο τα στοιχεία “apple” και “cherry”.
Στη δεύτερη εντολή, χρησιμοποιούμε τη μέθοδο discard()
για να αφαιρέσουμε το στοιχείο “banana” από το σύνολο. Η μέθοδος discard()
επίσης αναζητά το στοιχείο που προσδιορίζουμε και το αφαιρεί, αλλά αν το στοιχείο δεν υπάρχει στο σύνολο, δεν προκαλεί κανένα σφάλμα. Στη συγκεκριμένη περίπτωση, η εκτέλεση της εντολής δεν θα προκαλέσει κανένα σφάλμα, καθώς το “banana” υπάρχει στο σύνολο. Το αποτέλεσμα είναι το ίδιο με την προηγούμενη περίπτωση: εκτυπώνεται το ενημερωμένο σύνολο με τα στοιχεία “apple” και “cherry”.
Για να ενώσετε δύο σύνολα στην Python, έχετε δύο επιλογές. Μπορείτε να χρησιμοποιήσετε τη μέθοδο union()
ή τον τελεστή |
(pipe).
Με τη μέθοδο union()
, μπορείτε να καλέσετε τη μέθοδο σε ένα από τα δύο σύνολα και να την περάσετε το άλλο σύνολο ως παράμετρο. Η μέθοδος θα επιστρέψει ένα νέο σύνολο που περιέχει όλα τα στοιχεία από τα δύο αρχικά σύνολα.
Με τον τελεστή |
, μπορείτε να εφαρμόσετε τον τελεστή σε δύο σύνολα και θα επιστραφεί ένα νέο σύνολο που περιέχει τα στοιχεία και από τα δύο αρχικά σύνολα.
Και οι δύο τρόποι προσφέρουν το ίδιο αποτέλεσμα, δηλαδή την ενοποίηση των στοιχείων από τα δύο σύνολα. Επιλέξτε τη μέθοδο που σας εξυπηρετεί καλύτερα στο συγκεκριμένο πρόβλημα που αντιμετωπίζετε.
set1 = {"apple", "banana", "cherry"} set2 = {"orange", "kiwi", "melon"} # Χρησιμοποιώντας τη μέθοδο union() set3 = set1.union(set2) print(set3) # Εκτυπώνει "{'apple', 'banana', 'cherry', 'orange', 'kiwi', 'melon'}" # Χρησιμοποιώντας τον τελεστή | set3 = set1 | set2 print(set3) # Εκτυπώνει "{'apple', 'banana', 'cherry', 'orange', 'kiwi', 'melon'}"
Ο παραπάνω κώδικας δημιουργεί δύο σύνολα, set1
και set2
, που περιέχουν κάποια στοιχεία. Στη συνέχεια, εφαρμόζοντας τη μέθοδο union()
μεταξύ των δύο συνόλων, δημιουργείται ένα νέο σύνολο set3
που περιέχει όλα τα στοιχεία από τα set1
και set2
. Το αποτέλεσμα εκτυπώνεται και παρουσιάζει τη συνολική ενοποίηση των στοιχείων.
Ακόμη, χρησιμοποιώντας τον τελεστή |
(pipe) ανάμεσα στα set1
και set2
, επιτυγχάνεται το ίδιο αποτέλεσμα. Ο τελεστής |
προκαλεί την ενοποίηση των δύο συνόλων και το αποτέλεσμα είναι ένα νέο σύνολο που περιέχει όλα τα στοιχεία από τα αρχικά σύνολα.
Και οι δύο τρόποι επιτυγχάνουν τον ίδιο σκοπό, να ενώσουν τα στοιχεία δύο συνόλων, απλά με διαφορετική σύνταξη.
Παρακάτω παρατίθενται μερικές ακόμη μέθοδοι που μπορείτε να χρησιμοποιήσετε με σύνολα:
Η μέθοδος clear()
χρησιμοποιείται για να αφαιρέσει όλα τα στοιχεία από ένα σύνολο στην Python. Με την εκτέλεση της clear()
, το σύνολο παραμένει υπαρκτό, αλλά δεν περιέχει κανένα στοιχείο. Το αποτέλεσμα είναι ένα άδειο σύνολο.
my_set = {"apple", "banana", "cherry"} # Δημιουργία ενός συνόλου με τρία στοιχεία: "apple", "banana", "cherry" my_set.clear() # Αφαίρεση όλων των στοιχείων από το σύνολο print(my_set) # Εκτύπωση του περιεχομένου του συνόλου, το οποίο είναι το άδειο σύνολο {}
Στον παραπάνω κώδικα, η γραμμή my_set = {"apple", "banana", "cherry"}
δημιουργεί ένα σύνολο με τρία στοιχεία: “apple”, “banana”, “cherry”. Στη συνέχεια, η γραμμή my_set.clear()
εκτελεί τη μέθοδο clear()
στο my_set
, η οποία αφαιρεί όλα τα στοιχεία από το σύνολο. Τέλος, η γραμμή print(my_set)
εκτυπώνει το περιεχόμενο του my_set
, το οποίο είναι το άδειο σύνολο set()
.
Η συνάρτηση issubset()
ελέγχει εάν όλα τα στοιχεία ενός πρώτου συνόλου υπάρχουν επίσης σε ένα δεύτερο σύνολο. Παρακάτω παραθέτω μια παράφραση:
“Η συνάρτηση issubset()
είναι μια μέθοδος που μπορείτε να χρησιμοποιήσετε σε ένα σύνολο για να ελέγξετε εάν όλα τα στοιχεία του πρώτου συνόλου υπάρχουν επίσης στο δεύτερο σύνολο. Η σύνταξη για τη χρήση της συνάρτησης issubset()
είναι η εξής: set1.issubset(set2)
. Αν όλα τα στοιχεία του set1
υπάρχουν επίσης στο set2
, η συνάρτηση issubset()
επιστρέφει True
, αλλιώς επιστρέφει False
.”
set1 = {"apple", "banana"} # Δημιουργία του πρώτου συνόλου set2 = {"apple", "banana", "cherry"} # Δημιουργία του δεύτερου συνόλου print(set1.issubset(set2)) # Εκτύπωση του αποτελέσματος της συνάρτησης issubset() # Αν το set1 είναι υποσύνολο του set2, εκτυπώνει True
Στον παραπάνω κώδικα, δημιουργούμε δύο σύνολα, set1
και set2
. Χρησιμοποιώντας τη μέθοδο issubset()
, ελέγχουμε εάν όλα τα στοιχεία του set1
υπάρχουν επίσης στο set2
. Αφού το set1
περιέχεται πλήρως μέσα στο set2
, η έκφραση set1.issubset(set2)
επιστρέφει την τιμή True
, και αυτή η τιμή εκτυπώνεται στην οθόνη.
[adinserter block=”3″]
Η συνάρτηση issuperset()
χρησιμοποιείται στην Python για να ελέγξει αν το πρώτο σύνολο είναι υπερσύνολο του δεύτερου συνόλου. Συγκεκριμένα, ελέγχει αν όλα τα στοιχεία του δεύτερου συνόλου υπάρχουν και στο πρώτο σύνολο.
Μπορούμε να το παραφράσουμε ως εξής:
“Η συνάρτηση issuperset()
εφαρμόζεται σε ένα σύνολο στην Python και ελέγχει αν όλα τα στοιχεία ενός δεύτερου συνόλου υπάρχουν επίσης στο πρώτο σύνολο. Αν όλα τα στοιχεία του δεύτερου συνόλου βρίσκονται στο πρώτο σύνολο, τότε το πρώτο σύνολο θεωρείται υπερσύνολο του δεύτερου συνόλου.”
set1 = {"apple", "banana", "cherry"} set2 = {"apple", "banana"} print(set1.issuperset(set2)) # Εκτυπώνει True
Στον παραπάνω κώδικα, δημιουργούμε δύο σύνολα, το set1
και το set2
. Με τη χρήση της μεθόδου issuperset()
, ελέγχουμε αν το set1
είναι υπερσύνολο του set2
. Επειδή το set1
περιέχει όλα τα στοιχεία του set2
, η συνθήκη είναι αληθής και εκτυπώνεται True.
Η μέθοδος pop()
χρησιμοποιείται για να αφαιρέσει ένα τυχαίο στοιχείο από ένα σύνολο και να το επιστρέψει. Είναι σημαντικό να σημειωθεί ότι αν το σύνολο είναι άδειο, η χρήση της μεθόδου pop()
θα οδηγήσει σε ένα KeyError
.
Παράδειγμα κώδικα:
my_set = {1, 2, 3, 4, 5} removed_item = my_set.pop() print(removed_item) # Εκτυπώνει ένα τυχαίο στοιχείο από το σύνολο
Στον παραπάνω κώδικα, αφαιρούμε ένα τυχαίο στοιχείο από το σύνολο my_set
χρησιμοποιώντας τη μέθοδο pop()
. Το αφαιρεθέν στοιχείο αποθηκεύεται στη μεταβλητή removed_item
και έπειτα εκτυπώνεται. Είναι σημαντικό να προσέξουμε ότι αν το σύνολο είναι άδειο, η εκτέλεση της μεθόδου pop()
θα προκαλέσει ένα KeyError
.
Η μέθοδος symmetric_difference()
ή ο τελεστής ^
επιστρέφει το συμμετρικό αποκλειστικό (XOR) των στοιχείων των δύο συνόλων. Αυτό σημαίνει ότι επιστρέφονται τα στοιχεία που υπάρχουν μόνο σε ένα από τα δύο σύνολα, αλλά όχι σε και τα δύο. Αναφέρεται δηλαδή στην “αποκλειστικότητα” των στοιχείων μεταξύ των δύο συνόλων.
Για παράδειγμα:
set1 = {1, 2, 3} set2 = {2, 3, 4} result = set1.symmetric_difference(set2) print(result) # Εκτυπώνει {1, 4}
Στο παραπάνω παράδειγμα, το set1
περιλαμβάνει τα στοιχεία {1, 2, 3} και το set2
περιλαμβάνει τα στοιχεία {2, 3, 4}. Το συμμετρικό αποκλειστικό των δύο συνόλων περιλαμβάνει τα στοιχεία {1, 4}, τα οποία υπάρχουν μόνο σε ένα από τα δύο σύνολα.
Η συνάρτηση update()
χρησιμοποιείται για να ενημερώσει ένα σύνολο προσθέτοντας τα στοιχεία από ένα άλλο σύνολο, ή οποιαδήποτε άλλη επαναληπτική δομή δεδομένων. Κατά την εκτέλεση της update()
, τα στοιχεία που προστίθενται στο αρχικό σύνολο αφαιρούνται τα διπλότυπα, εξασφαλίζοντας ένα μοναδικό σύνολο.
Ας δούμε ένα παράδειγμα:
set1 = {1, 2, 3} set2 = {3, 4, 5} set1.update(set2) print(set1) # Εκτυπώνει {1, 2, 3, 4, 5}
Στον παραπάνω κώδικα, αρχικά δημιουργούμε δύο σύνολα, το set1
με στοιχεία 1, 2 και 3, και το set2
με στοιχεία 3, 4 και 5. Στη συνέχεια, καλούμε τη συνάρτηση update()
στο set1
, περνώντας το set2
ως παράμετρο. Η update()
προσθέτει τα στοιχεία του set2
στο set1
, αφαιρώντας τα διπλότυπα. Τέλος, εκτυπώνουμε το περιεχόμενο του set1
, το οποίο είναι {1, 2, 3, 4, 5}
.