Ένα θέμα που προέκυψε διδάσκοντας στην τάξη ήταν πως μπορούμε να διαγράψουμε κάποιο στοιχείο από μία λίστα στην Python. Ας διερευνήσουμε λοιπόν λίγο τη διαγραφή στοιχείων από μία λίστα.
Μέρος 1ο
Μέθοδος pop
1 2 3 4 5 6 7 8 |
>>> >>> a_list = [1,3,5,7,11,3,7,5,11,3] >>> # Η μέθοδος που αναφέρεται στη 2η έκδοση του βιβλίου είναι η pop >>> # pop(index) >>> a_list.pop() # αφαίρεση του τελευταίου στοιχείου εφόσον δεν δόθηκε κάποιος δείκτης 3 >>> a_list.pop(2) 5 >>> a_list [1, 3, 7, 11, 3, 7, 5, 11] |
Παρατηρείστε ότι δεν αφαιρείται απλά ένα στοιχείο αλλά επιστρέφεται κιόλας οπότε μπορούμε να το πάρουμε και σε μία μεταβλητή πχ
1 2 3 4 |
>>> >>> item = a_list.pop(1) >>> print item 3 >>> print a_list [1, 7, 11, 3, 7, 5, 11] |
Η παραπάνω μέθοδος (pop) είναι και η μόνη που υπάρχει πλέον στα διδακτικά πακέτα.
Υπάρχουν και άλλες; βέβαια αλλά δεν “νομιμοποιούμαστε” να τις χρησιμοποιήσουμε στον κώδικα που θα δώσουμε στις εξετάσεις παρά μόνο στα προγράμματά μας (κανονικά πρέπει να λέμε στα σενάριά μας our scripts). όπως:
Συνάρτηση del
Η συνάρτηση (και όχι μέθοδος) del.
1 2 3 4 5 |
>>> >>> a_list [1, 7, 11, 3, 7, 5, 11] >>> del a_list[1] >>> a_list [1, 11, 3, 7, 5, 11] >>> # del a_list[index] |
Η del σε αντίθεση με την pop, δεν επιστρέφει κάτι.
Μέθοδος remove
Επίσης για τη διαγραφή στοιχείων υπάρχει και η μέθοδος remove.
1 2 3 4 5 |
>>> >>> a_list [1, 11, 3, 7, 5, 11] >>> # a_list.remove(value) [1, 11, 3, 5, 11] >>> a_list.remove(11) >>> a_list [1, 3, 5, 11] |
Παρατηρείστε ότι η remove διαγράφει με βάση την τιμή και όχι την θέση, οπότε εάν ένα στοιχείο εμφανίζεται περισσότερες από μία φορές διαγράφει μόνο το πρώτο που θα βρει.
ΚΑΙ ΤΩΡΑ … προκύπτει το ερώτημα πώς μπορούμε να διαγράψουμε εντελώς ένα στοιχείο που εμφανίζεται περισσότερες από μία φορές από μία λίστα; ΟΕΟ
…. Σκεφτείτε το λίγο (κάντε κανένα σχόλιο με τις προτάσεις σας) και η απάντηση …