Gerade als ich dachte, ich hätte verstanden, wie Python-Listen arbeiten ...Kopieren Python Listen
>>> a = [1,2,3]
>>> b = a[:]
>>> b
[1,2,3]
>>> b[1]=100
>>> b
[1,100,3]
>>> a
[1,2,3]
So weit, so gut. Ich initialisiere b mit dem Inhalt von a, so dass b auf ein anderes Objekt zeigt. Folglich beeinflussen Änderungen in b nicht a.
nun einen Blick auf diese anderen Beispiel nehmen:
>>> a = [[1,2,3],[4,5,6],[7,8,9]]
>>> b = a[:][:]
>>> b
[[1,2,3],[4,5,6],[7,8,9]]
>>> b[1][1] = 100
>>> b
[[1,2,3],[4,100,6],[7,8,9]]
>>> a
[[1,2,3],[4,100,6],[7,8,9]]
Warum hat sich in b die Änderung betroffen ein dieses Mal? Was unterscheidet sich vom vorherigen Beispiel?
Beachten Sie, dass die Verwendung von '[:]' zu kopieren ist ein wenig kryptisch - in der Regel finde ich es viel schöner, 'list()' oder 'copy.copy()' zu verwenden, abhängig vom Kontext. (Natürlich ist, wie in Antworten darauf hingewiesen, 'copy.deepcopy()' möglicherweise das, was Sie hier haben wollen). –