2015-08-20 99 views
0

正如标题所说,一个变量导致另一个变为零,原因没有。这里是我的代码,用大量的打印语句来试图弄清楚发生了什么。(Python)一个变量在赋值给另一个变量时变为零

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打印出:

蚂蚁1 0.005738905060148785

蚂蚁2 0.005738905060148785

在1 0.005738905060148785

在2 0.005738905060148785

在3 0

由于我无法确定的原因,在将ta_c赋值为零后,a_t变为零。我对python比较陌生,但这让我疯狂!

+0

您是否将值乘以0? –

+0

不,我将theta_c [i]设置为零,并且a_t变为零。没有互相连接。 –

+1

你在代码中做某事像'some_varaible = some_list'吗? –

回答

0

如果你做了一个像theta_c = a_t这样的任务,那么你实际上并没有复制数组,你只是用另一个变量引用同一个数组。

因此,当您更改theta_c时,您也正在更改a_t。你应该题干浅拷贝来代替:

theta_c = list(a_t) 

当然,根据不同的情况,即使是浅拷贝可能是不够的,但在这种情况下,它可能会做的伎俩。

相关问题