Python 2D Array of Zeros Paradox

I have tried to create an array of zeros in Python without using NumPy.
python3
>>> a = [[0]*3]*3
>>> a
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> b = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> b
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> a[0][0] = 1
>>> a
[[1, 0, 0], [1, 0, 0], [1, 0, 0]]
>>> b[0][0] = 1
>>> b
[[1, 0, 0], [0, 0, 0], [0, 0, 0]]
So yes, there is here a mystery - at least if you don’t understand what is going on. The paradox is solved by understanding that [[0]*3] is shallow copied by the outer *3. At least this is my suspicious, although I could not find yet the documentation that states that asterisk over a list executes shallo-copy of the list. If you do not know about shallow copy in Python, Google it :-)
Anyway, the only way I found, so far, to write this correctly is using list comprehension: [[0]*3 for i in range(3)].