(Python)将值赋给另一个变量时,一个变量变为零

时间:2015-08-20 23:56:54

标签: python python-3.x

正如标题所说,一个变量导致另一个变量为零而没有明显的原因。这是我的代码,短缺了大量的印刷语句,试图找出正在发生的事情。

for i in range(1, number_of_layers):
    a_nt[i] = 0.5 * ((dia / 2) ** 2) * (theta_t[i] - sin(theta_t[i]))
    print("ant 1 ", a_nt[i])

我为a_nt分配一个值,然后决定如何在if状态中使用该值将其分配给a_t。代码进入了else部分。

else:
    print("ant 2 ", a_nt[i])
    a_t[i] = a_nt[i]
    print("at 1 ", a_t[i])
    y_t[i] = y_nt[i]
    print("at 2 ", a_t[i])
    theta_c[i] = 0
    print("at 3 ", a_t[i])

Python打印出来:

ant 1 0.005738905060148785

ant 2 0.005738905060148785

at 1 0.005738905060148785

at 2 0.005738905060148785

at 3 0

由于我无法确定的原因,在为theta_c赋值为零后a_t变为零。我对python来说比较新,但这让我疯了!

1 个答案:

答案 0 :(得分:0)

如果您进行theta_c = a_t之类的作业,那么您实际上并未复制数组,那么您只需使用其他变量引用相同的数组。

因此,当您更改theta_c时,您也会更改a_t。您可能应该采用浅色副本:

theta_c = list(a_t)

当然,根据情况,即使是浅层副本也可能不够,但在这种情况下,它可能会成功。