我有一个由n个元素组成的列表,并且我试图创建一个新nxn
数组,其中所有行都是我上一个列表的元素(例如,如果我有一个列表u = [a,b],则该数组是y = [u,u] = [[a,b],[a,b]]),对于索引i = 1,2的所有值,...我希望所有元素y [i] [i ]与其他值h相加(即,如果列表为p = [a,b],则最终乘积为q = [p,p] = [[a + h,b],[a,b + h]])。
如果我使程序像这样简单
u=[[1,2],[1,2]]
h=1e-3
for i in range(2):
u[i][i]+=1
print(u)
它会正确打印出我想要的
[[2, 2], [1, 3]]
但是如果我像这样循环
x=[1,2]
u=[]
h=1e-3
for i in range(len(x)):
u.append(x)
for i in range(2):
u[i][i]+=1
print(u)
该程序将假定我正在尝试像这样将其每个元素加1
[[2, 3], [2, 3]]
我确实在用第二个代码向其u [i] [i]元素加1之前检查了“ u”,它也打印出u = [[1,2],[1,2]]。那么,我在这里做错了什么?
x=[1,2]
u=[]
h=1e-3
for i in range(len(x)):
u.append(x.copy())
for i in range(2):
u[i][i] +=1
print(u)
你快到了!实际上,当您将x附加到u两次时,就构成了“双胞胎”。这意味着:x停留在u中。你有两次x。如果您修改x的u [0],则您修改x的u [1]。
为了避免这种情况,请使用x.copy()。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句