Python函数正在改变我输入的值,我不明白为什么

2024-02-08

这是我的第一个问题,所以如果我是一个完全愚蠢的人发布这个,请告诉我为什么以及我将来如何避免它!

我有一些 python 代码,应该只需要一个列表,并将第 j 个分量乘以 -1。这是有问题的代码。

def flip(spins,j):
    z = spins
    z[j] = z[j]*-1
    return z

然而,我注意到如果我尝试做类似的事情

spin = [1,1,1]
test = flip(spin,1)

它会将正确的值 [1,-1,1] 分配给 'test',但也会将 'spin' 的值更改为 [1,-1,1]。我知道一定有一些明显的东西我忽略了,但我已经盯着它看了两个小时,但仍然看不到它。

感谢您的帮助!


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

如果你想z成为一个copy of spins然后就做:

z = spins[:]

or:

z = list(spins)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python函数正在改变我输入的值,我不明白为什么 的相关文章

随机推荐