Python

ΕΝΟΤΗΤΑ 19 - Sets

image description

Στο σημερινό δωρεάν μάθημα Python θα μάθουμε θα δούμε θεωρητικά και πρακτικά τι είναι τα Sets και θα αναλύσουμε τις διαφορές τους από τα Lists και τα Dictionaries.

Τα Sets έχουν πολλά κοινά χαρακτηριστικά με τα Lists και τα Dictionaries. Ένα Set είναι μια συλλογή από δεδομένα όπως και ένα List. Όμως στα Sets, επειδή θεωρούνται unordered collection δεν υπάρχει Index αριθμός αλλά χρησιμοποιούμε την λογική του key όπως και στα Dictionaries. Αν και παρουσιάζουν κάποια παρόμοια συμπεριφορά με αυτή των Lists και τα Dictionaries, τα Sets διαφοροποιούνται στο γεγονός ότι όλα τα στοιχεία μέσα στο Set είναι μοναδικά. Δηλαδή δύο στοιχεία δεν μπορούν να έχουν την ίδια τιμή. Επίσης τα στοιχεία που βρίσκονται μέσα στο Set μπορεί το καθένα να έχει το δικό του data type.

Υπάρχουν δύο τρόποι να ορίσουμε ένα Set – ο πρώτος είναι να χρησιμοποιήσουμε την μέθοδο set( ) ενώ ο δεύτερος είναι να χρησιμοποιήσουμε curly brackets όπως ακριβώς κάνουμε και στα Dictionaries. Ας δούμε ένα απλό παράδειγμα μέσα από το οποίο ορίζουμε ένα απλό Set και με τους δύο τρόπους.

App.py


using_set = set([1,2,3,4,5])

using_brackets = { 1, 2, 3, 4, 5}

print(using_set)
print(using_brackets)
   

Output


{1, 2, 3, 4, 5}
{1, 2, 3, 4, 5}
 	 

Τα Sets είναι mutable αντικείμενα, που σημαίνει ότι μπορούμε να προσθέσουμε ή να αφαιρέσουμε δεδομένα από αυτά όπως και να καθαρίσουμε όλα τα δεδομένα. Ας δούμε ένα απλό παράδειγμα που χρησιμοποιεί όλες αυτές τις μεθόδους που είναι διαθέσιμες σε ένα Set αντικείμενο.

App.py


using_brackets = { 1, 2, 3, 4, 5}

using_brackets.add(6)
using_brackets.add(7)
print(using_brackets)

using_brackets.update([8,9,10])
print(using_brackets)

using_brackets.remove(10)
print(using_brackets)

using_brackets.clear()
print(using_brackets)
	
   

Output


{1, 2, 3, 4, 5, 6, 7}
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
{1, 2, 3, 4, 5, 6, 7, 8, 9}
set()
 	 

Μπορούμε επίσης να χρησιμοποιήσουμε και for loop για να τυπώσουμε όλα τα στοιχεία ενός Set

App.py


using_brackets = { 1, 2, 3, 4, 5}

for val in using_brackets:
    print(val)
   

Output


1
2
3
4
5
 	 

Εκτός από το να μοιάζουν με Lists και Dictionaries αλλά να διαφέρουν στο γεγονός ότι οι τιμές σε ένα Set πρέπει να είναι μοναδικές, υπάρχει κάποια άλλη διαφορά που τα κάνει να ξεχωρίζουν και κατά συνέπεια να προτιμηθούν σε μερικές περιπτώσεις από τους προγραμματιστές? Φυσικά και υπάρχει! Ένα Set αντιπροσωπεύει στην πραγματικότητα ένα αλγεβρικό Set τιμών. Μπορούμε λοιπόν να βρούμε τα κοινά στοιχεία δύο Set με την χρήση του intersection ή να δημιουργήσουμε ένα καινούργιο Set μόνο από τις μοναδικές τιμές δύο άλλων Set με την χρήση του union.

App.py


set1 = { 1, 2, 3, 4, 5}
set2 = {1, 2, 8, 9}

set3 = set1.union(set2)
print(set3)

set4 = set1.intersection(set2)
print(set4)

set5 = set1.difference(set2)
print(set5)
	
   

Output


{1, 2, 3, 4, 5, 8, 9}
{1, 2}
{3, 4, 5}
 	 

Πριν κλείσουμε, ας αναλύσουμε ακόμα μια έννοια που μπορείτε να ακούσετε και ονομάζετε frozenset. Στην ουσία μιλάμε για να Set που είναι immutable (δεν μπορεί να αλλάξει όπως και τα tuples), unordered και unique. Τέτοια Sets μπορούμε να χρησιμοποιήσουμε για παράδειγμα στο να ορίζουμε τραπεζικούς λογαριασμούς που ο αριθμός που χαρακτηρίζει τον λογαριασμό δεν αλλάζει.

Για να ορίσουμε ένα frozenset χρησιμοποιούμε την μέθοδο frozenset.

App.py


frostset = frozenset([1,2,3,4,5])
print(frostset)
         

Output


frozenset({1, 2, 3, 4, 5})
 	 

ΕΙΣΗΓΗΤΗΣ

Merry Jhonson

Μιχάλης Κασάπογλου

Ο Μιχάλης Κασάπογλου, είναι ένας από τους πιο έμπειρους τεχνικούς εκπαιδευτές στον χώρο του προγραμματισμού με πάνω από 20 χρόνια εμπειρία. Έχει εργαστεί σαν IT Operations Manager, Senior Programmer, και Training Team Leader ενώ κατέχει και αρκετές πιστοποιήσεις που καλύπτουν ένα μεγάλο φάσμα τεχνολογιών στο προγραμματισμό, σε βάσεις δεδομένων και cloud. Στον ελεύθερο του χρόνο διατηρεί ένα τεχνολογικό blog στο οποίο θα βρείτε αρκετά δωρεάν μαθήματα προγραμματισμού για αρχάριους.

loader