2015-08-20 94 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) 

當然,根據不同的情況,即使是淺拷貝可能是不夠的,但在這種情況下,它可能會做的伎倆。

相關問題