将值添加到数组中的元素之一

Helmi Aziz |

我有一个由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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章