2017-05-02 6 views
0

私は本当にショックを受けています。なぜこれが起こったのかという論理を考えることができませんでした。これは私がしたことです:配列Aを配列Bに複製して配列の1つをシャッフルしますが、配列の両方がシャッフルされます

>>> 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は同じオブジェクトです。そういうわけで、どちらか一方を変更すると、他方が変更されますあなたがオブジェクトをコピーしたい場合は、ここでそれを行うための一つの方法です:

= cで[:]

here

関連する問題