I am confused why the below works but the following does not?
Input:
grid = [[0,1,0],[0,0,1],[1,1,1],[0,0,0]]
Working:
def foo(grid):
    m = len(grid)
    n = len(grid[0])
    gridCopy = [[grid[row][col] for col in range(n)] for row in range(m)]
    return gridCopy == grid
Does not work:
def bar(grid):
    m = len(grid)
    n = len(grid[0])
    gridCopy = [[None] * n] * m
    for i in range(m):
        for j in range(n):
            gridCopy[i][j] = grid[i][j]
    return gridCopy == grid
I get the following grid returned from bar():
gridCopy = [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
 
    