μην ξεχνάμε ότι το Newlist = Oldlist[:]
κάνει shallow copy (μια νέα λίστα αλλά όχι deep copy..)
διότι παρουσιάζονται ορισμένες φορές με τις λίστες της python προβλήματα (εξαρτάται το τι θές να κάνεις )
όπως δημιουργείται (αναφορά) reference σε ένα αντικείμενο και όχι αντίγραφο (copy)
πχ
- Κώδικας: Επιλογή όλων
In [2]: x= [1,2,3]
In [3]: y= x
In [4]: z= y
In [5]: x
Out[5]: [1, 2, 3]
In [6]: y
Out[6]: [1, 2, 3]
In [7]: z
Out[7]: [1, 2, 3]
In [8]: y[0]='?'
In [9]: y
Out[9]: ['?', 2, 3]
In [10]: x
Out[10]: ['?', 2, 3]
In [11]: y
Out[11]: ['?', 2, 3]
In [12]: z
Out[12]: ['?', 2, 3]
In [13]: z[0] = 1
In [14]: x
Out[14]: [1, 2, 3]
In [15]: y
Out[15]: [1, 2, 3]
In [16]: z
Out[16]: [1, 2, 3]
αν δεν μας ενδιαφέρει να γίνονται αλλαγές ταυτόχρονα σε όλα τα objects απλά κάνουμε ένα αντίγραφο
πχ
- Κώδικας: Επιλογή όλων
In [17]: w = x[:]
In [18]: w[0] = ':)'
In [19]: w
Out[19]: [':)', 2, 3]
In [20]: x
Out[20]: [1, 2, 3]
In [21]: y
Out[21]: [1, 2, 3]
In [22]: z
Out[22]: [1, 2, 3]
αν όμως έχουμε λίστες μέσα σε λίστες τότε πρέπει να γίνονται αναδρομικά αντίγραφα... οπότε και πάμε στο copy module (deepcopy)
περισσότερα
http://docs.python.org/library/copy.html
http://www.python-course.eu/deep_copy.php




