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?

Respuestas a la pregunta(3)

Su respuesta a la pregunta