Why is the supplied list getting altered even when I have done all the operations in m list variable sliced from supplied matrix list.
def matrixflip(matrix, d):
    m = matrix[:]
    lenghth = len(m)
    if d == 'h':
        for i in m:
            i.reverse()
        return m
    elif d == 'v':
        for i in range(lenghth//2):
            for j in range(len(m[0])):
                (m[i][j] , m[lenghth-1-i][j]) = (m[lenghth-1-i][j] , m[i][j])
        return m
    else : return m
myl = [[1, 2], [3, 4]]
p = matrixflip(myl,'v')
print(p)
print (myl)
[[3, 4], [1, 2]]
[[3, 4], [1, 2]]
but I need to have an input matrix(myl) unchanged
 
    