2d array de ceros

No hay ningún tipo de matriz en Python, pero para emularlo podemos usar listas. Quiero tener una estructura similar a una matriz 2d rellena con ceros. Mi pregunta es: ¿cuál es la diferencia, si la hay, en estas dos expresiones:

zeros = [[0 for i in xrange(M)] for j in xrange(M)]

y

zeros = [[0]*M]*N

Serázeros ser igual? ¿Cuál es mejor usar por medio de velocidad y legibilidad?

Respuestas a la pregunta(3)

Su respuesta a la pregunta