python中变量影响的这个问题是什么?
What is this issue of variable affectation in python?
我在 python 中遇到了这个问题。我有一个接受以下输入的函数
import numpy;
from numpy import *;
def GetInf(G, X, m, n):
g = G[m - 1, :].T;
Y = X;
Y[m - 1, :] = 0;
Y[:, n - 1] = 0;
# Here I modify Y. The problem is that X is modified too. Why?
# In fact, I add Y after I see that X is changing but X keeps changing.
result = sum(Y * G);
return result;
G = array([[1., 2., 3.], [4., 5., 6.]]);
X = array([[1., 0., 0.], [0., 0., 1.]]);
I = GetInf(G, X, 1, 1);
我的问题是,当我调试程序时,我发现在修改 Y
之后,X
也被修改了。我不明白为什么。
因为你将 X
分配给 Y
。这意味着 Y
是对 X
所在位置的引用!如果你不想,你必须复制 X
:
Y=np.copy(X)
我在 python 中遇到了这个问题。我有一个接受以下输入的函数
import numpy;
from numpy import *;
def GetInf(G, X, m, n):
g = G[m - 1, :].T;
Y = X;
Y[m - 1, :] = 0;
Y[:, n - 1] = 0;
# Here I modify Y. The problem is that X is modified too. Why?
# In fact, I add Y after I see that X is changing but X keeps changing.
result = sum(Y * G);
return result;
G = array([[1., 2., 3.], [4., 5., 6.]]);
X = array([[1., 0., 0.], [0., 0., 1.]]);
I = GetInf(G, X, 1, 1);
我的问题是,当我调试程序时,我发现在修改 Y
之后,X
也被修改了。我不明白为什么。
因为你将 X
分配给 Y
。这意味着 Y
是对 X
所在位置的引用!如果你不想,你必须复制 X
:
Y=np.copy(X)