【发布时间】:2014-10-05 04:29:00
【问题描述】:
我认为我已经解决了我自己的问题,但我正在寻求更好地理解原因,或者得到启发/纠正。
我有一个我称之为 vec 的列表:
vec = [0.0, 0.0]
在读入数据时改变值。
为了比较当前值和以前的值,我有另一个列表,我称之为 oldvec。 如果我将 oldvec 定义为
oldvec = vec
然后每次 vec 更改值时它都会更改值,因此比较是无用的——它们总是相同的。
但是,如果我改为写
oldvec = [vv for vv in vec]
我没有这个问题——即使 vec 发生变化,oldvec 也会保持其值,因此当前向量和先前向量之间的比较可以按我的需要进行,即它实际上检测到重复和非重复! ...为什么?
【问题讨论】:
-
只是添加到下面所有好的答案,您可能会喜欢阅读 SO 成员 Ned Batchelder 的带有可爱图表的综合文章,Facts and myths about Python names and values。
-
Python references的可能重复
-
哇,太好了!非常感谢您提供的所有出色信息(包括链接)。