首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python列表追加

Python列表追加
EN

Stack Overflow用户
提问于 2012-09-05 18:40:35
回答 5查看 23.4K关注 0票数 5

我想在Python中存储变量的中间值。此变量在循环中更新。当我尝试使用list.append命令执行此操作时,它会用变量的新值更新列表中的每个值。我该怎么做呢?

代码语言:javascript
复制
while (step < maxstep):
    for i in range(100):    
        x = a*b*c
        f1 += x
    f2.append(f1)
    print f2
    raw_input('<<')
    step += 1

预期输出

代码语言:javascript
复制
[array([-2.03,-4.13])]
<<
[array([-2.03,-4.13]),array([-3.14,-5.34])]

打印输出

代码语言:javascript
复制
[array([-2.03,-4.13])]
<<
[array([-3.14,-5.34]),array([-3.14,-5.34])]

在python中有没有不同的方法可以得到我想要的东西?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-09-05 18:48:03

假设原始文件有一个拼写错误,而f1实际上是fi (反之亦然):

fi是一个指向对象的指针,所以当你在fi += x时,实际上是在改变fi指向的对象的值,所以你会一直附加相同的指针。希望这一点是清楚的。

要解决这个问题,您可以改为使用fi = fi + x

票数 8
EN

Stack Overflow用户

发布于 2012-09-05 18:47:59

看起来您正在将相同的数组追加到列表中,然后更改数组的内容

每次将数组对象追加到f2时,都需要创建一个新的数组对象

如果需要更多帮助,您需要在问题中的代码中添加更多信息。这在目前并没有多大意义( fi的值在哪里发生了变化?)

票数 2
EN

Stack Overflow用户

发布于 2012-09-05 18:50:23

我想你的意思是这样的:

代码语言:javascript
复制
   f2 = []
   f1 = 0
   for i in range(100):    
       x = f()
       f1 += x
   f2.append(f1)
   print f2

请注意,如果f1是一个可变对象,则f1 += x行不会创建新对象,而只是更改f1的值,因此它在f2数组中出现的所有内容都会被更新。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12279599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档