我想在Python中存储变量的中间值。此变量在循环中更新。当我尝试使用list.append命令执行此操作时,它会用变量的新值更新列表中的每个值。我该怎么做呢?
while (step < maxstep):
for i in range(100):
x = a*b*c
f1 += x
f2.append(f1)
print f2
raw_input('<<')
step += 1预期输出
[array([-2.03,-4.13])]
<<
[array([-2.03,-4.13]),array([-3.14,-5.34])]打印输出
[array([-2.03,-4.13])]
<<
[array([-3.14,-5.34]),array([-3.14,-5.34])]在python中有没有不同的方法可以得到我想要的东西?
发布于 2012-09-05 18:48:03
假设原始文件有一个拼写错误,而f1实际上是fi (反之亦然):
fi是一个指向对象的指针,所以当你在fi += x时,实际上是在改变fi指向的对象的值,所以你会一直附加相同的指针。希望这一点是清楚的。
要解决这个问题,您可以改为使用fi = fi + x。
发布于 2012-09-05 18:47:59
看起来您正在将相同的数组追加到列表中,然后更改数组的内容
每次将数组对象追加到f2时,都需要创建一个新的数组对象
如果需要更多帮助,您需要在问题中的代码中添加更多信息。这在目前并没有多大意义( fi的值在哪里发生了变化?)
发布于 2012-09-05 18:50:23
我想你的意思是这样的:
f2 = []
f1 = 0
for i in range(100):
x = f()
f1 += x
f2.append(f1)
print f2请注意,如果f1是一个可变对象,则f1 += x行不会创建新对象,而只是更改f1的值,因此它在f2数组中出现的所有内容都会被更新。
https://stackoverflow.com/questions/12279599
复制相似问题