Python变量被间接修改

时间:2019-03-04 06:43:29

标签: python list variables mutable

我遇到一个问题,尽管我从未直接更改过它,但我在代码块开头设置的python变量正在通过它神秘地修改。

要尝试绕过python列表可变问题,该问题经常是由于将变量设置为另一个已经定义的列表变量而引起的,所以我将定义放入list()函数中,如下所示:

orig_bias = list(self.bias)
print(orig_bias)
new = list(self.bias)
layr = randint(0,len(new)-1)
node = randint(0,len(new[layr])-1)
new[layr][node] += randint(-100,100)/100
self.bias = new
new_error = self.error(training_input, training_output)
if new_error < orig_error:
    print("new bias error: ",new_error)
    continue
else:
    print("Bad bias change")
    print(orig_bias)
    self.bias = orig_bias

罪魁祸首是变量“ orig_bias”,它偶尔会在代码中发生变化。控制台输出的示例如下:

[[0.65, 0.97, 0.17999999999999994, -0.42, -0.88], [0.47000000000000003, 0.69, 0.09]]
Bad bias change
[[0.65, 0.97, 0.17999999999999994, -0.42, -0.88], [-0.39999999999999997, 0.69, 0.09]]

但是,在另一个场合:

[[0.88, 0.97, 0.17999999999999994, -0.42, -0.88], [0.47000000000000003, 0.69, 0.09]]
Bad bias change
[[0.65, 0.97, 0.17999999999999994, -0.42, -0.88], [0.47000000000000003, 0.69, 0.09]]

我发现仅在某些情况下才对其进行修改是很奇怪的,如果有人可以帮助我了解变量orig_bias的变化方式,或者至少建议我应该寻找的位置,那将是很好的

如果需要更多信息,请告诉我。

0 个答案:

没有答案