在python中从矩阵中删除行
我得到了在python中从矩阵中删除行,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我得到了matrix=[[1,2,3],[4,5,6],[7,8,9]和matrix2=matrix。现在我想从matrix2中删除第一行,即matrix2.remove(矩阵[0]) 但我明白了 >>> matrix2.remove(matrix2[0]) >>> matrix2 [[4, 5, 6], [7, 8, 9]] >>> matrix [[4, 5, 6], [7, 8, 9]] 矩阵的第一行也被删除。有人能解
matrix=[[1,2,3],[4,5,6],[7,8,9]
和matrix2=matrix
。现在我想从matrix2中删除第一行,即matrix2.remove(矩阵[0])
但我明白了
>>> matrix2.remove(matrix2[0])
>>> matrix2
[[4, 5, 6], [7, 8, 9]]
>>> matrix
[[4, 5, 6], [7, 8, 9]]
矩阵的第一行也被删除。有人能解释一下吗?以及如何从矩阵2
中删除第一行而不更改矩阵
请尝试:
>>> 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]]
嗯。。。为什么呢?这是因为语句matrix2=matrix
没有“复制”值。。。它仅仅意味着名称matrix2
指向与名称matrix2
完全相同的值
要实际创建列表的(浅层)副本,我们只需将其切片为
matrix2=matrix[:]
。这将创建一个名称matrix2
,该名称指向一个新列表,其中包含名称矩阵的所有值您可以使用标准库中的复制模块:
from copy import deepcopy
matrix = [[1,2,3],[4,5,6],[7,8,9]]
matrix2 = deepcopy(matrix)
matrix2.remove(matrix2[0])
matrix
[Out]: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
matrix2
[Out]: [[4, 5, 6], [7, 8, 9]]
列表是可变类型,当您使用赋值运算符将其赋值给不同的变量(matrix2=matrix
)时,它只引用相同的对象,表示两个引用变量(matrix2,matrix
)引用相同的对象。因此,在这种情况下,我们需要使用copy.copy()
或copy.deepcopy()
函数复制实际对象,并将其赋值给另一个变量。这里我使用的是copy.copy()
from copy import *
matrix = [[1,2,3],[4,5,6],[7,8,9]]
matrix1 = copy(matrix)
matrix1.remove(matrix1[0])
matrix
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
matrix1
[[4, 5, 6], [7, 8, 9]]
你需要制作一份矩阵的深度副本。。。可能是Nope@JulienSpronck的重复。我的问题是“这里发生了什么!!??”我正在删除matrix2的行,为什么还要删除matrix2中的行!?请检查其他问题。。。