Λίστες στην Python
Οι λίστες στην Python είναι δομές δεδομένων που χρησιμοποιούνται για την αποθήκευση μιας ακολουθίας στοιχείων. Ας εξετάσουμε λεπτομερέστερα τις λίστες και πώς μπορούμε να αναφερόμαστε σε συγκεκριμένα στοιχεία μιας λίστας.
Δημιουργία Λίστας
Οι λίστες συνήθως αποθηκεύουν ομογενή δεδομένα, δηλαδή τιμές του ίδιου τύπου δεδομένων. Για παράδειγμα, η λίστα c περιέχει πέντε ακέραιους αριθμούς:
c = [11, 22, 33, 44, 55]
Ωστόσο, μπορούν επίσης να αποθηκεύουν ετερογενή δεδομένα, δηλαδή δεδομένα διαφορετικών τύπων. Για παράδειγμα, η ακόλουθη λίστα περιέχει το όνομα (συμβολοσειρά), το επώνυμο (συμβολοσειρά), τον μέσο όρο βαθμών (αριθμός με κινητή υποδιαστολή) και το έτος αποφοίτησης ενός μαθητή (ακέραιος):
student = ["Νίκος", "Παπαδόπουλος", 3.7, 2022]
Πρόσβαση στα Στοιχεία μιας Λίστας
Για να αναφερθείτε σε ένα στοιχείο λίστας, γράψτε το όνομα της λίστας ακολουθούμενο από τον δείκτη (index) του στοιχείου, μέσα σε αγκύλες ([]). Ο δείκτης δηλώνει τη θέση του στοιχείου στη λίστα. Για παράδειγμα, στη λίστα c, το πρώτο στοιχείο έχει δείκτη 0, οπότε αναφερόμαστε σε αυτό ως c[0], ενώ το τελευταίο στοιχείο έχει δείκτη 4 και αναφερόμαστε σε αυτό ως c[4]:
first_element = c[0] # 11 last_element = c[4] # 55
Οι λίστες είναι μια θεμελιώδης δομή δεδομένων στην Python και πολλές από τις δυνατότητές τους εφαρμόζονται και σε άλλους τύπους ακολουθιών.
Καθορισμός του Μήκους μιας Λίστας
Για να πάρετε το μήκος μιας λίστας, χρησιμοποιήστε την ενσωματωμένη συνάρτηση len
:
c = [11, 22, 33, 44, 55] length = len(c) # Επιστρέφει το μήκος της λίστας c
Πρόσβαση στα Στοιχεία από το Τέλος της Λίστας με Αρνητικούς Δείκτες
Μπορείτε επίσης να προσπελάσετε τα στοιχεία μιας λίστας από το τέλος της χρησιμοποιώντας αρνητικούς δείκτες. Για παράδειγμα, το τελευταίο στοιχείο της λίστας c (c[4]) μπορεί να προσπελαστεί με c[-1] και το πρώτο στοιχείο με c[-5]:
last_element = c[-1] # Επιστρέφει 55, το τελευταίο στοιχείο της λίστας first_element = c[-5] # Επιστρέφει 11, το πρώτο στοιχείο της λίστας
Οι Δείκτες Πρέπει να Είναι Ακέραιοι ή Ακεραίες Εκφράσεις
Ένας δείκτης πρέπει να είναι ακέραιος αριθμός ή μια ακέραια έκφραση (ή ένα τμήμα, όπως θα δούμε σύντομα). Η χρήση μη ακέραιας τιμής για δείκτη προκαλεί ένα TypeError
.
Οι Λίστες Είναι Μεταβαλλόμενες (Mutable)
Οι λίστες είναι μεταβαλλόμενες, δηλαδή τα στοιχεία τους μπορούν να τροποποιηθούν:
c[0] = 99 # Αλλάζει το πρώτο στοιχείο της λίστας c σε 99
Επίσης, μπορείτε να εισάγετε και να διαγράφετε στοιχεία, αλλάζοντας έτσι το μήκος της λίστας.
Ορισμένες Ακολουθίες Είναι Αμετάβλητες (Immutable)
Στην Python, οι ακολουθίες συμβολοσειρών και πλειάδων (tuples) είναι αμετάβλητες – δεν μπορούν να τροποποιηθούν. Μπορείτε να προσπελάσετε τους μεμονωμένους χαρακτήρες μιας συμβολοσειράς, αλλά η προσπάθεια αντιστοίχισης νέας τιμής σε έναν από τους χαρακτήρες προκαλεί TypeError
.
Προσπάθεια Πρόσβασης σε Μη Υπάρχον Στοιχείο
Η χρήση ενός δείκτη που είναι εκτός των ορίων μιας λίστας, πλειάδας ή συμβολοσειράς προκαλεί IndexError
.
Χρήση Στοιχείων Λίστας σε Εκφράσεις
Τα στοιχεία των λιστών μπορούν να χρησιμοποιηθούν ως μεταβλητές σε εκφράσεις:
a_list = [1, 2, 3] result = a_list[0] + a_list[1] # Προσθέτει τα πρώτα δύο στοιχεία της λίστας
Προσθήκη στοιχείων σε Λίστα με τον Τελεστή +=
Ξεκινώντας από μια κενή λίστα []
, μπορείτε να χρησιμοποιήσετε μια εντολή for
και τον τελεστή +=
για να προσθέσετε τις τιμές από το 1 έως το 5 στη λίστα:
a_list = [] for number in range(1, 6): a_list += [number] # Προσθέτει κάθε φορά το number στη λίστα
Όταν το αριστερό μέρος του +=
είναι λίστα, το δεξιό μέρος πρέπει να είναι μια περιηγήσιμη συλλογή (iterable), διαφορετικά θα προκύψει TypeError
. Στο παράδειγμα του αποσπάσματος, οι αγκύλες γύρω από το number
δημιουργούν μια λίστα με ένα στοιχείο, το οποίο προ
στίθεται στην a_list
. Αν το δεξιό μέρος περιέχει πολλαπλά στοιχεία, το +=
τα προσθέτει όλα. Για παράδειγμα, το ακόλουθο παράδειγμα προσθέτει τους χαρακτήρες της συμβολοσειράς ‘Python’ στη λίστα letters
:
letters = [] letters += 'Python' # Προσθέτει όλους τους χαρακτήρες στη λίστα letters
Αν το δεξιό μέρος του +=
είναι πλειάδα, τα στοιχεία της πλειάδας προστίθενται επίσης στη λίστα. Αργότερα στο κεφάλαιο, θα χρησιμοποιήσουμε τη μέθοδο append
της λίστας για να προσθέσουμε στοιχεία σε μια λίστα.
Συνένωση Λιστών με τον Τελεστή +
Μπορείτε να συνενώσετε δύο λίστες, δύο πλειάδες (tuples) ή δύο συμβολοσειρές χρησιμοποιώντας τον τελεστή +
. Το αποτέλεσμα είναι μια νέα ακολουθία του ίδιου τύπου που περιέχει τα στοιχεία του αριστερού τελεστέα ακολουθούμενα από τα στοιχεία του δεξιού τελεστέα. Οι αρχικές ακολουθίες παραμένουν αμετάβλητες:
list1 = [1, 2, 3] list2 = [4, 5, 6] concatenated_list = list1 + list2 # [1, 2, 3, 4, 5, 6]
Ένα TypeError
συμβαίνει εάν τα δύο τμήματα του τελεστή +
είναι διαφορετικών τύπων ακολουθιών – για παράδειγμα, η συνένωση μιας λίστας με μια πλειάδα είναι λάθος.
Χρήση των for και range για Πρόσβαση στους Δείκτες και τις Τιμές της Λίστας
Τα στοιχεία των λιστών μπορούν επίσης να προσπελαστούν μέσω των δεικτών τους και του τελεστή προσπέλασης []
:
for i in range(len(concatenated_list)): print(concatenated_list[i])
Η κλήση της συνάρτησης range(len(concatenated_list))
παράγει μια ακολουθία ακέραιων που αντιπροσωπεύουν τους δείκτες της concatenated_list
(σε αυτή την περίπτωση, από το 0 έως το 4). Όταν κάνετε looping με αυτόν τον τρόπο, πρέπει να διασφαλίσετε ότι οι δείκτες παραμένουν εντός των ορίων. Σύντομα, θα δείξουμε έναν ασφαλέστερο τρόπο για την πρόσβαση στους δείκτες και τις τιμές των στοιχείων χρησιμοποιώντας την ενσωματωμένη συνάρτηση enumerate
.
Τελεστές Σύγκρισης
Μπορείτε να συγκρίνετε ολόκληρες λίστες στοιχείο προς στοιχείο χρησιμοποιώντας τελεστές σύγκρισης. Αυτό σημαίνει ότι μπορείτε να ελέγξετε αν δύο λίστες είναι ίσες, μεγαλύτερες ή μικρότερες σε σχέση μεταξύ τους, βάσει της σειράς και των τιμών των στοιχείων τους.