更改向量的元素[重复]

问题描述 投票:0回答:3

我有一个“矩阵”,然后选择一行作为“向量”,然后更改该向量中的一个元素。 然而,“矩阵”中的元素也会发生变化。为什么?

Matrix = [[1,2,3],[4,5,6],[7,8,9]]
Vector = Matrix[1]
print('Vector', Vector)
print('Matrix', Matrix)
Vector[1] = float(99)
print('Vector', Vector)
print('Matrix', Matrix)

Output:
Vector [4, 5, 6]
Matrix [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Vector [4, 99.0, 6]
Matrix [[1, 2, 3], [4, 99.0, 6], [7, 8, 9]]
python matrix element
3个回答
0
投票

我假设这段代码是用Python编写的。发生这种情况的原因是因为

Vector = Matrix[1]
正在将
Matrix
的 1 索引行的引用分配给变量
Vector

为了获得

Matrix[1]
的深层副本,请使用
copy.deepcopy
。尝试以下代码,看看是否出现同样的赋值问题:

import copy
Matrix = [[1,2,3],[4,5,6],[7,8,9]]
Vector = copy.deepcopy(Matrix[1])

0
投票

Python 列表使用指针。代码中

Vector
Matrix[1]
的指针是相同的。尝试运行下面的代码来看看我的意思。

Matrix = [[1,2,3],[4,5,6],[7,8,9]]

Vector = Matrix[1]
print(id(Vector) == id(Matrix[1]))   # True

Vector2 = Matrix[1].copy()
print(id(Vector2) == id(Matrix[1]))  # False

有关更多详细信息,请参阅此答案:

浅拷贝、深拷贝和普通赋值操作到底有什么区别?


0
投票

我可以得出结论,作业

Vector = Matrix[1]

将向量设置为 Matrix[1] 的参考

您需要制作 Matrix[1] 的副本。

如果您使用 Python 进行编码,我建议您使用复制包中的深度复制。希望有帮助

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.