aet*_*etb 5 python input function
这是我的第一个问题,所以如果我是一个完整的dweeb帖子,请告诉我为什么以及如何在将来避免它!
我有一些python代码,只需要一个列表,并将第j个组件乘以-1.这是有问题的代码.
def flip(spins,j):
z = spins
z[j] = z[j]*-1
return z
Run Code Online (Sandbox Code Playgroud)
但是,我注意到的是,如果我尝试做类似的事情
spin = [1,1,1]
test = flip(spin,1)
Run Code Online (Sandbox Code Playgroud)
它会将适当的值[1,-1,1]分配给'test',但它也会将'spin'的值改为[1,-1,1].我知道必须有一些非常明显我忽视的东西,但我一直盯着它看了2个小时但仍然看不到它.
谢谢你的帮助!
在您的函数内部,z并spins引用相同的列表,该列表也称为全局名称spin.如果您修改了一个,那么通过其他名称也可以看到这些更改.变量z是多余的.
如果你想z成为一个复制的spins,然后就去做:
z = spins[:]
Run Code Online (Sandbox Code Playgroud)
要么:
z = list(spins)
Run Code Online (Sandbox Code Playgroud)