Python

ΕΝΟΤΗΤΑ 14 - Lists and Tuples (Part 3)

image description

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

Μια χρήσιμη μέθοδο που μας προσφέρει η Python όσο αφορά τα Lists είναι η sort( ). Με την μέθοδο αυτή μπορούμε να ταξινομήσουμε τα δεδομένα μας από το μικρότερο στο μεγαλύτερο με πολύ εύκολο τρόπο.

App.py

x = [30, 10, 80, 70, 5, 22]
x.sort()
print(x)	

Output

[5, 10, 22, 30, 70, 80]

Η συγκεκριμένη μέθοδος όμως αλλάζει μόνιμα την ταξινόμηση του List. Αν δεν θέλουμε να επηρεάσουμε το αρχικό List τότε έχουμε δύο επιλογές (α) μπορούμε να χρησιμοποιήσουμε την sorted( ) μέθοδο ή (β) να κάνουμε ένα αντίγραφο του List και να εφαρμόσουμε το sort( ) στο αντίγραφο. Ας δούμε πρώτα τον δεύτερο τρόπο.

App.py

x = [30, 10, 80, 70, 5, 22]
y = x[:]
y.sort()
print(x)
print(y)		

Output

[30, 10, 80, 70, 5, 22]
[5, 10, 22, 30, 70, 80]	

Επειδή η Python είναι αρκετά ευέλικτη γλώσσα προγραμματισμού, μας επιτρέπει επίσης να εφαρμόσουμε την sort( ) μέθοδο και σε strings.

App.py

x = ['you', 'will', 'never', 'walk', 'alone']
x.sort()
print(x)			

Output

['alone', 'never', 'walk', 'will', 'you']

Γενικότερα η sort( ) μέθοδο μπορεί να εφαρμοστεί σε οποιαδήποτε data types αρκεί όμως όλες οι τιμές του List να είναι το ίδιο data type. Αν λοιπόν ένα list περιέχει αριθμούς και strings ταυτόχρονα σαν δεδομένα και προσπαθήσουμε να εφαρμόσουμε την sort( ) μέθοδο, η Python θα μας γυρίσει πίσω exception διαμαρτυρόμενη ότι δεν μπορεί να εκτελέσει την συγκεκριμένη μέθοδο στην List.

App.py

x = [1, 'you', 'will', 'never', 'walk', 'alone']
x.sort()
print(x)				

Output

Traceback (most recent call last):
File "c:/Users/Michail/Desktop/Training/Python/pythonpractice/app.py", line 2, in 
x.sort()
TypeError: '<' not supported between instances of 'str' and 'int'  

Όπως ήδη αναφέραμε, υπάρχουν δύο τρόποι για να κάνουμε sort σε μια List χωρίς να επηρεάσουμε την αρχική. Είδαμε τον δεύτερο τρόπο, κατά τον οποίο αντιγράφουμε την αρχική List σε μια καινούργια και εφαρμόζουμε εκεί την ταξινόμηση των δεδομένων. Υπάρχει όμως και η sorted( ) μέθοδο η οποία εφαρμόζει την λογική του sort προσωρινά μόνο κατά την διάρκεια της εκτέλεσης της. Η αρχική List παραμένει όπως ήταν. Αν τώρα θέλουμε να διατηρήσουμε το αποτέλεσμα αυτού του προσωρινού sort τότε θα πρέπει να αναθέσουμε το αποτέλεσμα σε μια καινούργια List. Νομίζω είναι πολύ λογικό αυτό.

Στο παρακάτω παράδειγμα, θα δούμε στην πράξη την θεωρία που μόλις αναλύσαμε προσθέτοντας ακόμα μια δυνατότητα ή καλύτερα ιδιότητα – το reverse sort. Είτε στην sort( ), είτε στην sorted( ) μέθοδο, μπορούμε να προσθέσουμε την ιδιότητα reverse με την τιμή true έτσι ώστε να δεδομένα να ταξινομηθούν από τον μεγαλύτερο αριθμό προς το μικρότερο.

App.py

x = [30, 10, 80, 70, 5, 22]
y = sorted(x)
print(y)
z = sorted(x, reverse=True)
print(z)					

Output

[5, 10, 22, 30, 70, 80]
[80, 70, 30, 22, 10, 5]	  

Όταν θέλουμε τώρα να βρούμε αν μια τιμή υπάρχει στο List μπορούμε να χρησιμοποιήσουμε τον in operator. Ενώ με το not in operator θέλουμε να επιβεβαιωθούμε ότι κάποια τιμή δεν υπάρχει ήδη στο List.

App.py

x = ['one', 'two', 'three', 'four', 'five']
k = 'three' in x
print(k)
y = 'six' not in x
print(y)						

Output

True
True		  

Άλλοι operators που μπορούμε να χρησιμοποιήσουμε είναι ο + operator και ο * operator. Με τον πρώτο μπορούμε να προσθέσουμε ένα list σε ένα άλλο (κάτι αντίστοιχο του concatenation στα strings) ενώ με το δεύτερο μπορούμε να πολλαπλασιάσουμε τα δεδομένα αυξάνοντας τα κατά ένα συγκεκριμένο αριθμό.

App.py

x = [1, 2, 3] + [4, 5, 6]
print(x)

y = x * 2
print(y)

Output

[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]

Σειρά έχει τώρα να μιλήσουμε για τα tuples. Τα tuples είναι παρόμοια με τα lists με την μόνη διαφορά ότι δεν μπορούν να τροποποιηθούν από την στιγμή που θα δημιουργηθούν. Είναι κατά κάποιο τρόπο κλειδωμένα σετ από δεδομένα.

Για να ξεχωρίζει η Python ένα list από ένα tuple, ενώ στο list χρησιμοποιεί [ ], στο tuple χρησιμοποιεί ( ). Μετά την δημιουργία του tuple έχουμε σχεδόν τις ίδιες μεθόδους για να λαμβάνουμε πίσω πληροφορίες για τα δεδομένα.

App.py

x = (1, 2, 3)
print(x[2])
print(x[1:])

Output

3
(2, 3)

Για τα tuples, η Python μας προσφέρει ένα εύκολο τρόπο να αναθέτουμε τιμές από ένα tuple σε μεταβλητές.

App.py

(one, two, three, four) = (1, 2, 3, 4)
print(one)

Output

1

Πριν κλείσουμε το σημερινό δωρεάν μάθημα Python θα ήταν χρήσιμο να απαντήσουμε και στην πιο συχνή ερώτηση που έχουν όσοι συναντάνε την έννοια του tuple και του list για πρώτη φορά – υπάρχει τρόπος να μετατρέψουμε ένα list σε tuple και το αντίστροφο? Και η απάντηση είναι ναι με την χρήση των μεθόδων tuple και list αντίστοιχα.

App.py

x = [1,2,3,4,5]
y = tuple(x)
print(y)

k = list(y)
print(k)

Output

(1, 2, 3, 4, 5)
[1, 2, 3, 4, 5]

ΕΙΣΗΓΗΤΗΣ

Merry Jhonson

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

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

loader