Python copy.deepcopy listas parece superficial
Estoy tratando de inicializar una lista de listas que representan una matriz de 3x3:
import copy
m = copy.deepcopy(3*[3*[0]])
print(m)
m[1][2] = 100
print(m)
y la salida es:
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
[[0, 0, 100], [0, 0, 100], [0, 0, 100]]
¡que no es lo que esperaba ya que se comparten los últimos elementos de cada fila! Obtuve el resultado que necesito usando:
m = [ copy.deepcopy(3*[0]) for i in range(3) ]
pero no entiendo por qué la primera (y más simple) forma no funciona. No esdeepcopy
se supone que es profundo?