私は、Pythonで初心者だし、これを発生し、なぜ私は本当に理解していない:リストがPythonで値を変更するのはなぜですか?
vector1 = [1,0,0,1]
left = vector1
print(str(left))
right = vector1
right[0] = 2
print(str(left))
print(str(right))
出力は次のとおりです。
[1, 0, 0, 1]
[2, 0, 0, 1]
[2, 0, 0, 1]
私が本当にしたいことは次のとおりです。
[1, 0, 0, 1]
[1, 0, 0, 1]
[2, 0, 0, 1]
なぜ 'left'ベクトルが最初の 'vector1'の値で修正されたのですか?
私は、これは初心者の質問であることを確信しているが、私はMATLABでコードを使用していると私は混乱しています...事前に
ありがとう!あなたは
left = vector1
を言うとき
'left'と' right'はコピーではありません。 –
'left = vector1'の後に、同じリストを参照する2つの変数があります。 2つのリストが必要な場合は、リストをコピーする必要があります。例えば。 'left = list(vector1)'、 'right = list(vector1)'です。 – khelwood
この[リンク](http://www.pythontutor.com/visualize.html#code=vector1%20%3D%20%5B1,0,0,1%5D%0Aleft%)でコードの実行を確認してください20%20%20%3D%20%1%0%28%29%29%0%0%20%3D%20%1%5B%3A%5D%0%5B0%5D%20%3D%202%0A%0A% 28%、28%、28%、28%、28%、28%、28%、28%、28%、28%、28%、28%、28%、28%、29%、29%次に、コードを編集して変更を検査します。 @Darthが示唆するように 'left = vector1 [:]'を使用してください。 – SSSINISTER