INTRODUCTION
ΟΡΙΣΜΟΣ ΤΟΥ LIST
Όπως οποιοδήποτε άλλο στοιχείο στην Python, έτσι και μια λίστα (list) είναι ένα αντικείμενο (για τα αντικείμενα θα μιλήσουμε σε μελλοντική ενότητα), το οποίο μπορεί να περιέχει πολλαπλά στοιχεία. Ένα σημαντικό χαρακτηριστικό της είναι ότι τα στοιχεία αυτά δεν είναι απαραίτητο να ανήκουν στον ίδιο τύπο δεδομένων (data type).
Μια λίστα (list) είναι επίσης δυναμική, κάτι που σημαίνει ότι κατά τη διάρκεια εκτέλεσης ενός προγράμματος μπορούμε να προσθέσουμε ή να αφαιρέσουμε στοιχεία από αυτήν, μεταβάλλοντας το μέγεθός της, όπως και το περιεχόμενό της. Αυτός είναι άλλωστε και ο λόγος που λέμε ότι οι λίστες είναι μεταβλητές (mutable), δηλαδή επιτρέπουν αλλαγές στα στοιχεία τους. Σε άλλες γλώσσες προγραμματισμού, θα συναντήσετε μια παρόμοια λογική λειτουργίας με τον όρο πίνακας (array).
Για να ορίσουμε μια λίστα (list) στην Python, η διαδικασία είναι πολύ απλή: μέσα σε αγκύλες [ ] (square brackets) δηλώνουμε τα στοιχεία της (ή elements, όπως ονομάζονται επίσημα), χωρίζοντάς τα με κόμμα. Ας δούμε ένα απλό παράδειγμα:
app.py
Output
Σε αυτό το παράδειγμα, η μεταβλητή teams ισούται με μια λίστα (list) που αποτελείται από αλφαριθμητικά (strings), και πιο συγκεκριμένα, από ονόματα ομάδων. Η λίστα μπορεί, μετά τη δήλωσή της, να μεγαλώσει ή να μικρύνει δυναμικά, ανάλογα με τις ανάγκες του προγράμματός μας.
Δεν θα ήθελα να συνεχίσω να συγκρίνω τη λίστα (list) της Python με κάτι αντίστοιχο από άλλες γλώσσες προγραμματισμού, γιατί πολύ απλά η λίστα της Python είναι πολύ πιο ευέλικτη. Για παράδειγμα, ενώ σε άλλες γλώσσες δεν επιτρέπεται τα στοιχεία (elements) να διαφέρουν μεταξύ τους όσον αφορά τον τύπο δεδομένων (data type), η Python το υποστηρίζει πλήρως.
app.py
Output
ΠΩΣ ΔΙΑΒΑΖΟΥΜΕ ΣΤΟΙΧΕΙΑ (ELEMENTS) ΑΠΟ ΜΙΑ ΛΙΣΤΑ
Τώρα που εξοικειωθήκαμε με τη σύνταξη των λιστών (lists), μπορούμε να προχωρήσουμε και στο επόμενο βήμα, που είναι το πώς διαβάζουμε τα στοιχεία τους.
Όπως και στα αλφαριθμητικά (strings), έτσι και στις λίστες, υπάρχει ένας δείκτης (index) ο οποίος ξεκινάει το μέτρημα από το μηδέν. Καθώς μεγαλώνει η λίστα, μεγαλώνει ταυτόχρονα και το εύρος του δείκτη. Για να αποκτήσουμε πρόσβαση σε οποιοδήποτε στοιχείο (element) της λίστας, δεν έχουμε παρά να γράψουμε το όνομά της και, αμέσως μετά, τον αριθμό του δείκτη μέσα σε αγκύλες [ ] (square brackets).
app.py
Output
Στην Python, μπορούμε επίσης να μετράμε από το τέλος της λίστας (list) προς την αρχή, χρησιμοποιώντας αρνητικούς δείκτες (negative indexing). Έτσι, ο δείκτης -1 μας δίνει πρόσβαση στο τελευταίο στοιχείο (element) της λίστας, ο δείκτης -2 στο προτελευταίο, και ούτω καθεξής.
app.py
Output
Μια λίστα (list) μπορεί επίσης να περιέχει μία ή περισσότερες άλλες λίστες ως στοιχεία (elements). Για να αποκτήσουμε πρόσβαση στο στοιχείο μιας εσωτερικής λίστας, απλά προσθέτουμε ένα ακόμα ζευγάρι αγκυλών [ ] (square brackets) μετά το πρώτο. Ο πρώτος δείκτης (index) ορίζει τη θέση της εσωτερικής λίστας μέσα στην κεντρική λίστα. Ο δεύτερος δείκτης ορίζει το συγκεκριμένο στοιχείο στο οποίο θέλουμε να αποκτήσουμε πρόσβαση μέσα σε αυτήν την εσωτερική λίστα.
app.py
Output
Χρησιμοποιώντας τον δείκτη (index), μπορούμε επίσης να αλλάξουμε την τιμή ενός συγκεκριμένου στοιχείου (element) της λίστας.
app.py
Output
ΤΙ ΑΚΡΙΒΩΣ ΕΙΝΑΙ ΤΟ LIST SLICING;
Όπως έχετε ήδη καταλάβει, η Python είναι μια αρκετά ευέλικτη γλώσσα προγραμματισμού με πλούσια βιβλιοθήκη λειτουργιών όσον αφορά τις λίστες (lists). Μία από αυτές τις λειτουργίες είναι η δυνατότητα να διαβάσουμε μια ομάδα από στοιχεία (elements) ταυτόχρονα, αντί να ορίζουμε τον κάθε δείκτη (index) ξεχωριστά. Αυτή η διαδικασία ονομάζεται τεμαχισμός (slicing).
Ο πιο απλός τρόπος για να διαβάσουμε μια ομάδα από στοιχεία μιας λίστας είναι η εξής σύνταξη: όνομα_λίστας[index1:index2].
- Ο πρώτος αριθμός (
index1) δηλώνει τον δείκτη από τον οποίο θα αρχίσουμε να διαβάζουμε τα στοιχεία της λίστας. - Ο δεύτερος αριθμός (
index2) δηλώνει σε ποιον δείκτη θα σταματήσουμε, χωρίς όμως να συμπεριλαμβάνεται το στοιχείο που βρίσκεται σε αυτήν τη θέση.
: - colon).app.py
Output
Μπορούμε επίσης να παραλείψουμε έναν από τους δύο δείκτες (indexes) κατά τον τεμαχισμό. Πιο συγκεκριμένα:
- Παράλειψη του δεύτερου δείκτη ([index1:]): Κρατώντας μόνο τον πρώτο δείκτη (index1) και παραλείποντας τον δεύτερο, ζητάμε από την Python να διαβάσει τη λίστα ξεκινώντας από το index1 μέχρι το τέλος της λίστας.
- Παράλειψη του πρώτου δείκτη ([:index2]): Αντίστοιχα, αν παραλείψουμε τον πρώτο δείκτη και κρατήσουμε μόνο τον δεύτερο (index2), αυτό σημαίνει ότι επιθυμούμε να διαβάσουμε από την αρχή της λίστας μέχρι το σημείο που ορίζει ο index2 (υπενθυμίζουμε, χωρίς να συμπεριλάβουμε το στοιχείο σε αυτήν τη θέση).
app.py
Output
Υπάρχει και μια τρίτη παράμετρος που μπορούμε να προσθέσουμε όταν κάνουμε τεμαχισμό (slicing), η οποία ονομάζεται βήμα (step). Το step καθορίζει το «άλμα» που θα κάνει η Python από το ένα στοιχείο στο επόμενο κατά την ανάγνωση της λίστας.
Αν, για παράδειγμα, ορίσουμε ως step τον αριθμό 2, τότε δηλώνουμε ότι θα διαβάζουμε κάθε δεύτερο στοιχείο (element) μέσα από το εύρος του slicing που έχουμε ορίσει (παραλείποντας δηλαδή τα ενδιάμεσα). Η πλήρης σύνταξη μορφοποιείται ως εξής: όνομα_λίστας[index1:index2:step].
app.py
Output
ΜΠΟΡΟΥΜΕ ΝΑ ΑΝΤΙΓΡΑΨΟΥΜΕ ΜΙΑ ΛΙΣΤΑ;
Φυσικά και μπορούμε να αντιγράψουμε μια λίστα (list), αλλά πρέπει να δώσουμε λίγη προσοχή στη θεωρία. Ο λάθος τρόπος να αντιγράψετε μια λίστα είναι να γράψετε list1 = list2.
Με αυτόν τον τρόπο, απλά έχετε δημιουργήσει δύο ονόματα μεταβλητών που «δείχνουν» (αναφέρονται) στο ίδιο ακριβώς σημείο της μνήμης στο οποίο βρίσκονται τα δεδομένα. Το αποτέλεσμα είναι ότι αν τροποποιήσετε ή διαγράψετε ένα στοιχείο (element) από τη list1, τότε επηρεάζεται αυτόματα και η list2, αφού στην ουσία μοιράζονται την ίδια ακριβώς λίστα!
app.py
Output
Οπότε, αν αυτό δεν είναι ακριβώς το αποτέλεσμα που επιθυμούμε, ποιος είναι ο σωστός τρόπος να αντιγράψουμε μια λίστα (list); Η απάντηση είναι απλή: η χρήση του τεμαχισμού (slicing) που ήδη έχουμε μάθει!
Αυτό που κάνουμε είναι να χρησιμοποιήσουμε τις αγκύλες με μία άνω και κάτω τελεία ([:]), χωρίς να δηλώσουμε κανέναν αριθμό (δείκτη). Για παράδειγμα: list2 = list1[:]. Το αποτέλεσμα είναι να αντιγραφούν όλα τα στοιχεία (elements) από την αρχή μέχρι το τέλος, δημιουργώντας μια εντελώς καινούργια και ανεξάρτητη λίστα στη μνήμη.
app.py
Output
Υπάρχουν ακόμα πολλές λειτουργίες που μπορούμε να εκτελέσουμε με τις λίστες (lists), τις οποίες θα καλύψουμε στην επόμενη ενότητα.
Μην ξεχάσετε να κάνετε μια μικρή δωρεά (donation), έτσι ώστε αυτό το site να μεγαλώσει ακόμα περισσότερο και να μας δώσει τη δυνατότητα να προσφέρουμε ακόμα καλύτερα online δωρεάν μαθήματα!
full-width


0 Comments
What do you think about Ground of Code?