2017-05-02 102 views
0

我真的很震驚,想不出邏輯爲什麼會發生這種情況。這是我做的:重複數組A到數組B中,洗牌數組中的一個,但是兩個數組都被混洗

>>> import random 
>>> c = a 
>>> a 
[1, 2, 3, 4, 5] 
>>> c 
[1, 2, 3, 4, 5] 
>>> random.shuffle(a) 
>>> a 
[5, 1, 3, 2, 4] 
>>> c 
[5, 1, 3, 2, 4] 
>>> random.shuffle(c) 
>>> c 
[5, 4, 3, 2, 1] 
>>> a 
[5, 4, 3, 2, 1] 
>>> 

預期的結果是,數組'a'與'c'不一樣。請用你的知識點亮我,解釋爲什麼結果與預期結果相同,因爲我瘋了。

+1

你不'C = A'創建列表的副本;你只需要得到*相同*列表的新參考。如果你想要一個副本,你可以這樣:'c = a [:]'。沒有理由感到震驚。 –

+0

哦哇非常感謝你,我無法理解發生了什麼,事實證明我沒有輸入我應該寫的語法 –

回答

1

c和a是同一個對象。這就是爲什麼要改變另一個。如果要複製的對象,這裏是應該做的一種方式:

A = C [:]

發現here