0
リストとnumpy配列には奇妙な動作があり、その理由を説明するいくつかの記事がありますが、問題を回避する方法については何も言及していません。Pythonの配列とリストをループ内で更新する方法
ので、Pythonはこのように振る舞う:
`a = [1,2,3]`
`a`
`[1,2,3]`
`b=a`
`b=[1,2,3]`
`b`
`[1,2,3]`
`b[1] = 84`
`a`
`[1,84,3]`
次の動作を達成するための最善の回避策は何ですか?
`a = [1,2,3]`
`b=a`
`b[1] = 84`
`a`
`[1,2,3]`
** **すべての** Pythonオブジェクトはこのように動作します。これは、 'list'sまたは' numpy.array'のいくつかの奇妙な詳細ではありません。コピーが必要な場合は、明示的にコピーを作成する必要があります。 'a = b'を実行すると、* a **は** b * –
' b = a [:] 'ですか?言いにくい。あなたは 'b'を変更し、' a'は変更しないままにしますか? – roganjosh
また、 'list'sと' numpy.ndarray'の両方に便利な '.copy()'メソッドがあります。また、**すべてのPythonオブジェクト**がこのように動作することを理解することは非常に重要です。単純にPythonの代入文のセマンティクスです。 Pythonのセマンティクスについて詳しく説明しているNed Batchederの[Pythonの名前と値に関する事実と神話](https://nedbatchelder.com/text/names.html)を参照してください。 –