Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中从矩阵中删除行_Python_Python 2.7_Python 3.x - Fatal编程技术网

在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中的行!?请检查其他问题。。。