从python中的矩阵中删除行

Kav*_*van 3 python python-2.7 python-3.x

我有matrix = [[1,2,3],[4,5,6],[7,8,9]]matrix2=matrix。现在我想从matrix2 中删除第一行,即matrix2.remove(matrix[0])

但我得到了这个

>>> matrix2.remove(matrix2[0])
>>> matrix2
    [[4, 5, 6], [7, 8, 9]]
>>> matrix
    [[4, 5, 6], [7, 8, 9]]
Run Code Online (Sandbox Code Playgroud)

第一行matrix也被删除。谁能解释一下吗?以及如何在matrix2不改变的情况下删除第一行matrix

don*_*mus 5

尝试:

>>> matrix = [[1,2,3],[4,5,6],[7,8,9]]
>>>
>>> # make matrix2 a (shallow) copy of matrix
>>> matrix2 = matrix[:]
>>> matrix2.remove(matrix[0])
>>> print(matrix2)
[[4, 5, 6], [7, 8, 9]]
Run Code Online (Sandbox Code Playgroud)

嗯……这是为什么呢?这是因为该语句matrix2 = matrix不会“复制”值......它仅意味着name指向与 namematrix2完全相同的值。 matrix

要实际创建列表的(浅)副本,我们可以将其切片为matrix2 = matrix[:]. 这将创建一个指向包含该名称的所有值的新列表的名称 matrix2 matrix