Δημοσιεύτηκε: 28 Ιουν 2011, 21:16
Ilias95 έγραψε:
To kati αντιπροσωπεύει κάθε αντικείμενο της λίστας, και με τον βρόχο for εκτελώ τις παρακάτω εντολές για το κάθε αντικείμενο της λίστας.
Έτσι όπως έγραψα παραπάνω, το:
- Κώδικας: Επιλογή όλων
for kati in lista:
print(kati)
Θα εκτελέσει την print για κάθε στοιχείο της λίστας 'lista'. Αυτό όμως δεν συμβαίνει με την del...
Δεν ζητάω την διαγραφή της λίστας, αλλά ζητάω σε κάθε επανάληψη του βρόχου να διαγράφεται το τρέχων στοιχείο της λίστας!
Δηλαδή και πάλι θα διαγραφεί όλη η λίστα, αλλά όχι με την ίδια διαδικασία...
Αυτό όμως δεν συμβαίνει. Γιατί;
Να επισημάνω δύο πράγματα:
1) Η εντολή for something in somethingelse λειτουργεί ως εξής:
Για κάθε ένα στοιχείο του somethingelse, αφού μεταφέρει το τρέχων στοιχείο στην something, εκτελεί τις επόμενες γραμμές.
Αυτό σημαίνει ότι στις επόμενες γραμμές θα είναι διαθέσιμο ένα αντίγραφο του τρέχοντος στοιχείου του somethingelse και όχι το ίδιο το στοιχείο.
2) H del σβήνει από την μνήμη την μεταβλητή που της ορίζεις. Έτσι όλα τα παρακάτω είναι σωστά:
- Κώδικας: Επιλογή όλων
del lista
......
del lista[2]
del lista[3]
......
for i in range(len(lista)):
del lista[i]
Το τελευταίο for είναι που σε ενδιαφέρει. Γιατί μπορείς να γράψεις κι έτσι το δικό σου:
- Κώδικας: Επιλογή όλων
for i in range(len(lista)):
print lista[i]
del lista[i]
Τώρα αφού σου εμφανίζει κάθε στοιχείο τις λιστας, μετά το σβήνει.