在我使用
python期间,我遇到了一个阻塞问题.我有一些SomeFunction应该做一些简单的计算(并且还要对它进行排序 – 我删除那段代码以使其更清晰)在整数给定的向量上并返回新的.
主要问题是,每个内部循环的结果必须成为下一个的输入,但变量k和X似乎在内存中具有相同的地址.
功能如下:
def SomeFunction(k, N):
X = range(N);
for i in range(N):
for j in range(3):
X[i] = k[i]*2;
print "X:";
print X;
print "k -> :";
print k
k = X;
print "============================";
return k;
它产生输出:
X: [0, 1, 2, 3, 4, 5, 6, 7] k -> : [0, 1, 2, 3, 4, 5, 6, 7] ============================ X: [0, 8, 2, 3, 4, 5, 6, 7] k -> : [0, 8, 2, 3, 4, 5, 6, 7] ============================
第一个循环的输出是可以的,因为第一个元素是0,但是对于其余的循环,你可以看到问题. X应该有新值,而k应该是相同的.有谁有任何想法如何解决这个问题?
最佳答案 当你说
k = X;
您没有在X中创建X的副本,但是您正在使X和k指向同一列表.您可以像这样创建列表的副本
k = X[:]
注意:Python并不期望;在行尾.