Python

ΕΝΟΤΗΤΑ 12 - Lists and Tuples (Part 1)

image description

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

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

Ο ορισμός του list είναι πολύ απλός: μέσα σε αγκύλες ( [ ] ) γράφουμε την λίστα με την δεδομένα που θέλουμε χωρισμένα ανάμεσα τους με κόμμα.

App.py

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

Output

[1, 2, 3]

Σε αυτό το παράδειγμα, η μεταβλητή x ισούται με ένα list που περιέχει τους αριθμούς 1, 2, και 3. Μην ανησυχείτε αν δεν είσαστε σίγουροι για το αρχικό μέγεθος του list και δεν γνωρίζετε όλα τα δεδομένα. Η λίστα μπορεί αμέσως μετά την δήλωση της να μεγαλώσει η να μικρύνει δυναμικά ανάλογα με τις ανάγκες του προγράμματός μας.

Δεν θα ήθελα να συνεχίσω να συγκρίνω το list της Python με κάτι αντίστοιχο από άλλες γλώσσες προγραμματισμού γιατί πολύ απλά το list της Python είναι πολύ πιο ευέλικτο. Για παράδειγμα, ενώ σε άλλες γλώσσες προγραμματισμού δεν επιτρέπεται τα στοιχεία να διαφέρουν μεταξύ τους όσο αφορά το data type, η Python το καλωσορίζει.

App.py

x = [5, “six”, [1,2,3]]
print(x)

Output

[5, 'six', [1, 2, 3]]

Ένα από τα πιο χρήσιμα functions που μας προσφέρει η Python είναι η len( ) που μας επιστρέφει τον αριθμό των στοιχείων ( ή elements όπως ονομάζονται) που περιέχει ένα list.

App.py

x = [3, 5, 7, 9]
print(len(x))

Output

4

Τώρα που έχουμε εξοικειωθεί με τις λίστες, μπορούμε να προχωρήσουμε και στο επόμενο βήμα που είναι το πως διαβάζουμε συγκεκριμένα elements από την λίστα ή και ακόμα πως τα αλλάζουμε. Όπως και στα strings έτσι και στα list υπάρχει ένας index αριθμός ο οποίος ξεκινάει το μέτρημα από τον αριθμό μηδέν ( 0 ). Όπως μεγαλώνει η list έτσι μεγαλώνει και η αρίθμηση του index. Για να αποκτήσουμε πρόσβαση σε οποιοδήποτε element του list δεν έχουμε παρά να γράψουμε το όνομα του list και αμέσως μετά μέσα σε αγκύλες τον αριθμό του index. Προσέξτε γιατί ο αριθμός του index είναι -1 θέση πίσω από την κανονική αρίθμηση.

App.py

x = ["one", "two", "three", "four", "five"]
print(x[4])

Output

five

Στην Python επιτρέπεται επίσης να μπορούμε να μετράμε από το τέλος του list προς την αρχή. Ο αριθμός -1 μας δίνει πρόσβαση στο τελευταίο element του list, ο αριθμός -2 μας δίνει πρόσβαση στον προτελευταίο αριθμό του list κτλ.

App.py

x = ["one", "two", "three", "four", "five"]
print(x[4])
print(x[-1])

Output

five
five

Όπως έχετε ήδη καταλάβει, η Python είναι αρκετά ευέλικτη και με πλούσια βιβλιοθήκη όσο αφορά τις δυνατότητες της με λίστες και γενικότερα με ομαδοποιήσεις δεδομένων. Μια από τις επιπλέον δυνατότητες που μας προσφέρει σε σύγκριση με άλλες γλώσσες προγραμματισμού είναι ότι αν θέλουμε να αποκτήσουμε πρόσβαση σε μια ομάδα από elements, αντί να ορίζουμε κάθε φορά list[index] για κάθε ένα από αυτά, μπορούμε να ορίσουμε το εύρος των index για το οποίο θέλουμε να διαβάσουμε. Το γενικό συντακτικό είναι list[index1 : index2] που δηλώνει ότι θα διαβάσουμε όλα τα elements ξεκινώντας από τον index1 αριθμό μέχρι τον index2 χωρίς όμως να συμπεριλαμβάνει τον index2. Οπότε αν προσέξτε λιγάκι με το εύρος των αριθμών που ζητάτε, όπως επίσης ότι υπάρχει το colon ( : ) ανάμεσα στα δύο indexes.

App.py

x = ["one", "two", "three", "four", "five"]
print(x[0:2])
print(x[1:3])
print(x[1:-1])
print(x[-2:-1])

Output

['one', 'two']
['two', 'three']
['two', 'three', 'four']
['four']

Μπορούμε επίσης να χρησιμοποιήσουμε μόνο ένα από τα δύο indexes. Αφήνοντας το index1 σημαίνει ότι επιθυμούμε να ξεκινήσουμε από την αρχή του list, ενώ αφήνοντας έξω το index2 σημαίνει ότι επιθυμούμε να φτάσουμε μέχρι το τέλος της λίστας.

App.py

x = ["one", "two", "three", "four", "five"]
print(x[:3])
print(x[2:])

Output

['one', 'two', 'three']
['three', 'four', 'five']

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

App.py

x = ["one", "two", "three", "four", "five"]
y = x[:]
y[0] = "first"

print(x[:])
print(y[:])

Output

['one', 'two', 'three', 'four', 'five']
['first', 'two', 'three', 'four', 'five']

ΕΙΣΗΓΗΤΗΣ

Merry Jhonson

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

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

loader