这是我的第一个问题,因此,如果我正在发布此消息,请让我知道为什么以及将来如何避免它!

我有一些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个小时,但仍然看不到它。

谢谢你的帮助!

最佳答案

在函数内部,zspins引用相同的列表,也称为spin的全局名称。如果您修改其中一个,则这些更改也可以通过其他名称看到。变量z是多余的。

如果您希望zspins的副本,则只需执行以下操作:

z = spins[:]

或者:
z = list(spins)

09-17 19:30