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