这是我的第一个问题,因此,如果我正在发布此消息,请让我知道为什么以及将来如何避免它!
我有一些python代码,应该只列出一个列表,并将第j个组件乘以-1。这是有问题的代码。
def flip(spins,j):
z = spins
z[j] = z[j]*-1
return z
但是,我要注意的是,如果我尝试做类似的事情
spin = [1,1,1]
test = flip(spin,1)
它将为[test]分配适当的值[1,-1,1],但还将'spin'的值更改为[1,-1,1]。我知道有些东西完全可以忽略,但是我一直盯着它看了2个小时,但仍然看不到它。
谢谢你的帮助!
最佳答案
在函数内部,z
和spins
引用相同的列表,也称为spin
的全局名称。如果您修改其中一个,则这些更改也可以通过其他名称看到。变量z
是多余的。
如果您希望z
是spins
的副本,则只需执行以下操作:
z = spins[:]
或者:
z = list(spins)