Δημοσιεύτηκε: 05 Αύγ 2009, 00:55
από Luke
Γενικά στις ασκήσεις αυτού του σετ νομίζω πως υπάρχει λάθος διατύπωση (αν όχι διορθώστε με) στις εργασίες που λέει να φτιάξουμε αντίγραφο κάποιας δομής.
Στις λύσεις φαίνεται να γίνεται αναφορά στην προς αντιγραφή δομή μέσω κάποιου άλλου pointer. Για παράδειγμα στις λίστες άσκηση 7 λέει:
έγραψε:Φτιάξτε καινούργια λίστα-αντίγραφο της λίστας lista. Όνομάστε την lista7.
Απάντηση:
Κώδικας: Επιλογή όλων
lista7 = lista

Δε θα έπρεπε κανονικά να είναι
Κώδικας: Επιλογή όλων
lista7 = lista[:]
ώστε να αντιγραφεί η δομή lista σε μια άλλη θέση μνήμης και όχι απλά να έχουμε ακόμα ένα pointer να δείχνει στην ίδια προηγούμενη δομή. Παραθέτω και το αντίστοιχο κομμάτι από τη θεωρία:
έγραψε:Θυμηθείτε ότι εάν θέλετε να φτιάξετε ένα αντίγραφο μιας λίστας, ή τέτοιου είδους ακολουθίες, ή σύμπλοκα αντικείμενα (όχι απλά αντικείμενα όπως ακέραιους αριθμούς), τότε πρέπει να χρησιμοποιήσετε τη λειτουργία τεμαχισμού για να φτιάξετε αντίγραφο. Εάν εκχωρήσετε την ονομασία της μεταβλητής σε μια άλλη ονομασία, τότε και οι δυο τους θα παραπέμπουν στο ίδιο αντικείμενο και αυτό θα μπορούσε να είναι πρόβλημα για σας, εάν δεν είστε προσεκτικοί.