Επιστημονικά Θέματα, Τεχνολογικά Νέα, Μουσική, Τραγούδια, Προγραμματισμός, Φωτογραφίες, Βίντεο, Καλλιτεχνικά θέματα, Τρόπος Ζωής, Θέματα θρησκείας, Συμβουλές και άλλα πολλά από το www.iliasblog.gr  

Λίστες



  • Η λίστα (list) είναι ένας τύπος ακολουθίας σαν τις πλειάδες, με τη διαφορά ότι είναι μεταβαλλόμενη, αφού επιτρέπει την προσθήκη και διαγραφή στοιχείων.
  • Οι λίστες λειτουργούν παρόμοια με τις πλειάδες, και άρα ό,τι έχουμε μάθει για τις πλειάδες, ισχύει και για τις λίστες.

Παράδειγμα: Αποθηκεύουμε ένα αριθμό χρωμάτων σαν μία λίστα στοιχείων. 


ΠΡΟΣΠΕΛΑΣΗ ΛΙΣΤΑΣ
  • Για να αναφερθούμε σε ένα στοιχείο της λίστας, γράφουμε το όνομα της και τη θέση του στοιχείου στη λίστα εντός αγκυλών [ ].

Ο αριθμός εντός αγκυλών ονομάζεται δείκτης και ξεκινάει πάντα με 0 για το 1ο στοιχείο, 1 για το 2ο στοιχείο, 2 για το 3ο στοιχείο κοκ.

ΕΥΡΕΤΗΡΙΑΣΗ & ΤΕΜΑΧΙΣΜΟΣ
  • Η ευρετηρίαση και ο τεμαχισμός μιας λίστας ακολουθεί παρόμοια μέθοδο με τις πλειάδες.
  • Στην ευρετηρίαση γράφουμε τον αριθμό θέσης του στοιχείου μέσα σε [ ].
  • Στον τεμαχισμό, προσδιορίζουμε τα δύο άκρα μιας φέτας μέσα σε [ ] έχοντας ως διαχωριστικό το σύμβολο :

  • Όπως εκχωρούμε μια νέα τιμή σε ένα στοιχείο, μπορούμε να εκχωρήσουμε νέα τιμή και σε μία φέτα.

  • Στο προηγούμενο παράδειγμα, η εντολή εκχώρησης colors[1:3] = ["grey"] αντικαθιστά τα στοιχεία colors[1] και colors[2] με την τιμή "grey".
  • Ωστόσο, επειδή εκχωρούμε μία λίστα με ένα στοιχείο σε μία φέτα με δύο στοιχεία, αυτό έχει ως αποτέλεσμα τη μείωση του μήκους της λίστας.
  • Η συνάρτηση len() λειτουργεί στις λίστες με τον ίδιο τρόπο που ξέρουμε από τις πλειάδες.

  • Ο τελεστής in έχει παρόμοιο τρόπο λειτουργίας στις λίστες όπως και στις πλειάδες.

ΣΥΝΕΝΩΣΗ ΛΙΣΤΩΝ
  • Η συνένωση λιστών γίνεται επίσης παρόμοια με τη συνένωση πλειάδων, με τη χρήση του τελεστή συνένωσης +.

ΔΙΑΓΡΑΦΗ ΣΤΟΙΧΕΙΩΝ
  • Επιπλέον, για να διαγράψουμε ένα στοιχείο από μία λίστα, χρησιμοποιούμε την εντολή del. Με τη διαγραφή ενός στοιχείου δεν δημιουργείται κάποιο κενό στη λίστα.
  • Το μήκος της λίστας συρρικνώνεται κατά ένα στοιχείο και όλα τα υπόλοιπα στοιχεία μετά το διαγραμμένο μετατοπίζονται προς τα κάτω μία θέση.

ΔΙΑΓΡΑΦΗ ΦΕΤΑΣ ΣΤΟΙΧΕΙΩΝ
  • Επίσης μπορούμε να διαγράψουμε και μία φέτα από τη λίστα. Ο επόμενος κώδικας διαγράφει με την εντολή colors[:2] τα δύο πρώτα στοιχεία της λίστας.
  • Όπως συμβαίνει και με τη διαγραφή ενός μόνο στοιχείου, το μήκος της λίστας μικραίνει κατά ένα και τα υπόλοιπα στοιχεία δημιουργούν την ανανεωμένη λίστα.

ΤΡΟΠΟΠΟΙΗΣΗ ΛΙΣΤΩΝ
  • Μπορούμε να αλλάξουμε την τιμή κάθε στοιχείου μιας λίστας με άμεση ανάθεση τιμής σε αυτό.
  • Μέσω της ευρετηρίασης, μπορούμε να εκχωρήσουμε μία τιμή σε ένα στοιχείο της λίστας αλλά δεν μπορούμε να δημιουργήσουμε νέο στοιχείο με αυτό τον τρόπο.

ΠΙΘΑΝΟ ΛΑΘΟΣ
  • Κάθε προσπάθεια να εκχωρήσουμε μία τιμή σε ένα στοιχείο που δεν υπάρχει, οδηγεί σε λάθος.

ΠΕΡΙΕΧΟΜΕΝΑ ΛΙΣΤΩΝ
  • Οι λίστες μπορούν να περιέχουν κάθε τύπο δεδομένων:
    • αριθμούς
    • strings
    • συνδυασμό από αριθμούς και strings.

ΣΥΝΕΝΩΣΗ ΛΙΣΤΩΝ
  • Με τη χρήση του τελεστή + μπορούμε να συνενώσουμε δύο επιμέρους λίστες.
Στο επόμενο παράδειγμα, συνενώνουμε δύο λίστες με ονόματα list1 και list2 με τον τελεστή + μέσα σε μία εντολή εξόδου print όπως και σε μία απλή εντολή εκχώρησης.


ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ ΛΙΣΤΩΝ
  • Μπορούμε να πολλαπλασιάσουμε μία λίστα με ένα ακέραιο αριθμό.
  • Αυτό λέει στην Python να επαναλάβει τα περιεχόμενα της λίστας για ένα πλήθος φορών.
  • Εάν όμως πολλαπλασιάσουμε τη λίστα με ένα μη ακέραιο αριθμό, προκαλούμε ένα συντακτικό λάθος.

ΠΙΘΑΝΟ ΛΑΘΟΣ 1
  • Αφαιρέσεις και διαιρέσεις δεν είναι επιτρεπτές σε λίστες και παράγουν μόνο συντακτικά λάθη.

ΠΙΘΑΝΟ ΛΑΘΟΣ 2
  • Αν προσθέσουμε σε μία λίστα κάτι που δεν είναι λίστα, προκαλούμε πάλι συντακτικό λάθος.

ΜΕΘΟΔΟΙ ΛΙΣΤΩΝ
  • Οι λίστες έχουν μεθόδους για την επεξεργασία τους:
    • append(value) - Προσθέτει μία τιμή στο τέλος της λίστας.
    • sort() - Ταξινομεί τα στοιχεία σε αύξουσα σειρά. Για φθίνουσα σειρά, χρησιμοποιούμε την παράμετρο reverse με λογική τιμή True.
    • reverse() - Αντιστρέφει τη σειρά των στοιχείων της λίστας.
    • count(value) - Επιστρέφει τον αριθμό των εμφανίσεων της τιμής value.
    • index(value) - Επιστρέφει τη θέση που πρωτοεμφανίζεται η τιμή value.
    • insert(i,value) - Εισάγει την τιμή value στη θέση i.
    • pop(i) - Επιστρέφει την τιμή της θέσης i διαγράφοντας την από τη λίστα. Χωρίς την τιμή i, το τελευταίο στοιχείο της λίστας διαγράφεται και επιστρέφει.
    • remove(value) - Διαγράφει την πρώτη εμφάνιση της τιμής value από τη λίστα.
ΠΡΟΣΘΗΚΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΛΙΣΤΑ
  • Για να προσθέσουμε ένα στοιχείο σε μία λίστα χρησιμοποιούμε τη μέθοδο append().
  • Με το τρόπο αυτό η λίστα μεγαλώνει κατά ένα στοιχείο.
 

ΑΦΑΙΡΕΣΗ ΣΤΟΙΧΕΙΟΥ ΑΠΟ ΛΙΣΤΑ
  • Με τη χρήση της μεθόδου remove() ο υπολογιστής διαγράφει την πρώτη εμφάνιση ενός στοιχείου που θέλουμε από τη λίστα.

  • Η μέθοδος remove() διαφέρει από την εντολή del διότι δεν διαγράφει ένα στοιχείο βάσει της θέσης του, αλλά βάσει της τιμής του.

ΠΙΘΑΝΟ ΛΑΘΟΣ

  • Εάν προσπαθήσουμε να διαγράψουμε μια τιμή που δεν υπάρχει στη λίστα, θα παράγουμε λάθος.
  • Μια ασφαλέστερη μέθοδος διαγραφής είναι η επόμενη όπου το στοιχείο ελέγχεται αν υπάρχει στη λίστα πριν διαγραφεί.
  • Ο έλεγχος γίνεται με τον τελεστή in.



ΤΑΞΙΝΟΜΗΣΗ ΣΤΟΙΧΕΙΩΝ ΛΙΣΤΑΣ
  • Η συνάρτηση sort() ταξινομεί τα στοιχεία μιας λίστας. Ως προεπιλογή, η sort() ταξινομεί τα στοιχεία σε αύξουσα σειρά.
  • Για αύξουσα σειρά, αρκεί να καλέσουμε τη μέθοδο χωρίς πέρασμα παραμέτρων.
  • Για ταξινόμηση σε φθίνουσα σειρά, περνάμε την τιμή True στην παράμετρο reverse.




ΕΜΦΩΛΕΥΜΕΝΕΣ ΑΚΟΛΟΥΘΙΕΣ
  • Οι λίστες και οι πλειάδες είναι ακολουθίες που μπορούν να περιέχουν ως στοιχεία τους άλλες λίστες ή πλειάδες.
  • Στην περίπτωση αυτή, ονομάζονται εμφωλευμένες ακολουθίες.
Στο επόμενο παράδειγμα, δημιουργούμε μια λίστα με 3 στοιχεία. Το πρώτο είναι ένα string, το δεύτερο είναι μια πλειάδα με δύο στοιχεία και το τρίτο είναι μία λίστα με 3 στοιχεία


Στο παράδειγμα, βλέπουμε μια λίστα με τρία στοιχεία που καθένα από αυτά είναι μία πλειάδα με δύο στοιχεία, ένα string και ένα αριθμό.


Η προσπέλαση των στοιχείων μιας εμφωλευμένης ακολουθίας γίνεται όπως σε κάθε άλλη ακολουθία μέσω ευρετηρίασης.



Για να προσπελάσουμε ένα από τα στοιχεία μίας από της πλειάδες, υπάρχουν δύο τρόποι: 
  • Εκχωρούμε την πλειάδα που θέλουμε σε μία μεταβλητή και κατόπιν προσδιορίσουμε μέσω δείκτη τη θέση που θέλουμε.

  • Χρησιμοποιούμε δύο δείκτες. Με τη χρήση πολλαπλών δεικτών μπορούμε να προσπελάσουμε άμεσα το στοιχείο που μας ενδιαφέρει.


UNPACKING
  • Επίσης, μπορούμε να εκχωρήσουμε ένα στοιχείο της εμφωλευμένης ακολουθίας σε ξεχωριστές μεταβλητές στην ίδια γραμμή κώδικα.
  • Αυτή η μέθοδος είναι γνωστή ως unpacking.


ΚΟΙΝΕΣ ΑΝΑΦΟΡΕΣ
  • Όταν διαφορετικές μεταβλητές αναφέρονται στην ίδια λίστα, μοιράζονται μια κοινή αναφορά σε αυτή.

  • Κάθε αλλαγή στην κοινή αυτή τιμή μέσω μίας εκ των μεταβλητών, αλλάζει την τιμή και των υπολοίπων.

  • Πρέπει να είμαστε προσεκτικοί με τις κοινές αναφορές όταν χρησιμοποιούμε λίστες. Αν αλλάξουμε την τιμή μέσω μίας από τις μεταβλητές, η τιμή θα αλλάξει και για τις άλλες.
  • Ωστόσο, μπορούμε να αποφύγουμε αυτό το πρόβλημα εάν εκχωρήσουμε την ίδια λίστα σε κάθε μία από τις μεταβλητές χωριστά.

Μακρής Ηλίας Π.Ε. Πληροφορικής