ΕΙΣΑΓΩΓΗ
Στο σημερινό δωρεάν μάθημα Python θα μάθουμε θεωρητικά και πρακτικά
τι είναι τα Sets, και τα Frozensets που είναι παράγωγά τους, ποια methods διαθέτουν
για την διαχείριση των στοιχείων τους και ποιες είναι οι διαφορές τους από τα lists και
τα dictionaries.
ΗΟW TO DEFINE A SET
Τα Sets έχουν πολλά κοινά χαρακτηριστικά με τα Lists και τα Dictionaries. Ένα Set είναι μια συλλογή από δεδομένα όπως και ένα List. Όμως στα Sets, επειδή θεωρούνται unordered collection δηλαδή τα δεδομένα παρουσιάζονται με τυχαία σειρά, δεν υπάρχει index αριθμός αλλά χρησιμοποιείται η λογική του key όπως και στα Dictionaries.
Αν και παρουσιάζουν παρόμοια συμπεριφορά με αυτή των Lists και τα Dictionaries, τα Sets διαφοροποιούνται στο γεγονός ότι όλα τα στοιχεία μέσα στο Set είναι μοναδικά. Δηλαδή δεν μπορούμε να έχουμε στοιχεία με την ίδια ακριβώς τιμή μέσα στο ίδιο Set. Επίσης το κάθε στοιχείο μπορεί να έχει το δικό του data type.
Για να ορίσουμε ένα set χρησιμοποιούμε τη function set( ) και δηλώνουμε μέσα σε curly brackets ( { } ) τα δεδομένα μας.
app.py
my_set = set({'Arsenal', 'Aston Villa'})print(type(my_set))print(my_set)
Output
Μπορούμε επίσης να παραλείψουμε τη function set( ) και να ορίσουμε ένα set χρησιμοποιώντας μόνο τα curly brackets( { } ).
app.py
my_set = {'Arsenal', 'Aston Villa'}print(type(my_set))print(my_set)
Output
METHODS OF SETS
Ένας εύκολος τρόπος για να μπορείτε να βρείτε όλες τις διαθέσιμες μεθόδους που υποστηρίζει κάποιο αντικείμενο, στη προκειμένη περίπτωση είναι τα sets για εμάς, είναι να χρησιμοποιήσουμε τη function dir( ).
app.py
my_set = {'Arsenal', 'Aston Villa'}print(dir(my_set))
Output
Επίσης για κάθε μέθοδο μπορείτε να λάβετε την περιγραφή της χρησιμοποιώντας τη function help( ).
app.py
my_set = {'Arsenal', 'Aston Villa'}help(my_set.add)
Output
Μπορείτε να καλέσετε αυτές τις δύο μεθόδους και σε lists ή dictionaries για να λάβετε χρήσιμες πληροφορίες.
Τώρα που έχουμε γνώση πως μπορούμε να δούμε όλες τις διαθέσιμες μεθόδους ενός set, ας χρησιμοποιήσουμε μερικές από αυτές σε ένα απλό παράδειγμα. Προσέξτε το βήμα όπου προσπαθούμε να προσθέσουμε την ίδια ομάδα δύο φορές. Απλά το set δεν θα δεχτεί την δεύτερη τιμή από την στιγμή που ήδη υπάρχει μέσα στα δεδομένα.
app.py
premier_league = {'Arsenal', 'Burnley', 'Everton', 'Aston Villa'}print(premier_league)
premier_league.add('Liverpool')premier_league.add('Liverpool')print(premier_league)
premier_league.remove('Liverpool')print(premier_league)
premier_league.clear()print(premier_league)
Output
Υπάρχει μια πολύ χρήσιμη διαφορά ανάμεσα στη remove( ) και στη discard( ) μέθοδο που είναι σημαντικό να γνωρίζετε. Αν προσπαθήσετε να διαγράψετε ένα στοιχείο μέσα από ένα set με τη χρήση του remove( ) και αυτό το στοιχείο δεν υπάρχει, η Python θα σας επιστρέψει λάθος. Αν όμως για την ίδια περίπτωση χρησιμοποιήσετε το discard( ) τότε η Python απλά θα αγνοήσει την εντολή χωρίς να σας επιστρέψει λάθος στο κώδικα σας.
app.py
premier_league = {'Arsenal', 'Burnley', 'Everton', 'Aston Villa'}premier_league.remove('Chelsea')
Output
app.py
premier_league = {'Arsenal', 'Burnley', 'Everton', 'Aston Villa'}premier_league.discard('Chelsea')
Output
USING FOR, IN, NOT OPERATORS
Όπως και στα προηγούμενα data structures που έχουμε μελετήσει, έτσι και στα sets μπορούμε να εκτελέσουμε ένα for loop για να πάρουμε μια λίστα με όλα τα δεδομένα που περιέχει.
app.py
premier_league = {'Arsenal', 'Burnley', 'Everton', 'Aston Villa'}for team in premier_league:print(team)
Output
Με την ίδια λογική μπορούμε να χρησιμοποιήσουμε και τους in και not operators.
app.py
premier_league = {'Arsenal', 'Burnley', 'Everton', 'Aston Villa'}if "Arsenal" in premier_league:print("This team belongs to Premier League")else:print("Try harder next year")
Output
MORE METHODS OF SETS
Εκτός από το ότι μοιάζουν με Lists και Dictionaries αλλά διαφέρουν στο γεγονός ότι οι τιμές σε ένα Set πρέπει να είναι μοναδικές, υπάρχει κάποια άλλη διαφορά που τα κάνει να ξεχωρίζουν και κατά συνέπεια να προτιμηθούν σε κάποιες περιπτώσεις? Φυσικά και υπάρχει! Ένα Set αντιπροσωπεύει στη πραγματικότητα ένα αλγεβρικό σετ τιμών. Μπορούμε λοιπόν να βρούμε τα κοινά στοιχεία δύο Set με τη χρήση της intersection( ) μεθόδου ή να δημιουργήσουμε ένα καινούργιο set από δύο άλλα set καλώντας τη union( ) μέθοδο.
app.py
teama = {'Arsenal', 'Burnley', 'Everton', 'Aston Villa'}teamb = {'Chelsea', 'Arsenal', 'Liverpool', 'Everton'}all_teams = teama.union(teamb)print(all_teams)common_teams = teama.intersection(teamb)print(common_teams)
Output
COMBINING SETS WITH LISTS
Επειδή τα Sets κρατάνε μόνο μοναδικά στοιχεία, μπορούμε να χρησιμοποιήσουμε αυτό το χαρακτηριστικό τους για να βρούμε τις μοναδικές τιμές ενός list μετατρέποντας το list σε set και πάλι πίσω σε list. Σκεφτείτε την περίπτωση να έχετε λάβει εκατοντάδες χιλιάδες εγγραφές από μια βάση και θέλετε γρήγορα να επιλέξετε μόνο τις μοναδικές τιμές. Αυτή η τακτική θα σας σώσει πολύ χρόνο.
app.py
teams = ['Arsenal', 'Burnley', 'Everton', 'Aston Villa', 'Arsenal']unique_teams = (list(set(teams)))print(unique_teams)
Output
['Arsenal', 'Everton', 'Burnley', 'Aston Villa']
DECLARING A FROZENSET
Πριν κλείσουμε το σημερινό δωρεάν μάθημα Python, ας αναλύσουμε ακόμη μια έννοια που ίσως ακούσετε και ονομάζετε frozenset. Στην ουσία μιλάμε για ένα set που είναι immutable (δεν μπορεί να αλλάξει), unordered και unique. Τέτοια sets μπορούμε να χρησιμοποιήσουμε για παράδειγμα στο να ορίζουμε τραπεζικούς λογαριασμούς που ο αριθμός τους δεν αλλάζει.
Για να ορίσουμε ένα frozenset χρησιμοποιούμε την μέθοδο frozeset( ).
app.py
teams = frozenset({'Arsenal', 'Burnley', 'Everton', 'Aston Villa', 'Arsenal'})print(teams)
Output
frozenset({'Arsenal', 'Everton', 'Aston Villa', 'Burnley'})
Μην ξεχάσετε
να κάνετε ένα μικρό donation έτσι ώστε αυτό το site να μεγαλώσει ακόμα πιο πολύ
και να αποκτήσει περισσότερες δυνατότητες online παράδοσης δωρεάν μαθημάτων.
full-width
0 Comments
Η γνώμη σας είναι σημαντική.