【发布时间】:2017-11-09 13:03:57
【问题描述】:
这是我的代码:
x = [[1],[1],[1],[-1]]
a = [[-2,-1,-1,-2],[1,-2,2,-1],[-1,-2,-2,-1],[2,-1,1,-2]]
h = 0.1
def K(h,a,x):
cont = [1,2,3,4]
k = []
for i in range(len(cont)):
k.append(h*cont[i])
y = x
print('original value',x)
for j in range(len(y)):
y[j][0] += k[j]/4
print('modified value',x)
K(h,a,x)
那么问题是为什么x 的值在没有收到任何东西的情况下会发生变化?
【问题讨论】:
-
因为您更改了
y而y只是x。要复制一个值,您需要实际复制它y = copy.deepcopy(x)。 -
但这对我来说没有意义,例如,如果我把 x = 3, y = x 和 y+= 5,x 的值不会改变
-
这种奇怪的行为适用于列表,而不适用于整数。这就是为什么 x = 3... 的行为符合您的预期。
-
y += 5就像y = y + 5。y + 5创建一个新值,然后将其分配给y。在这种情况下,不会创造新的价值;你只是在修改同一个列表。 -
@rosh 谢谢!我明白了
标签: python python-3.x