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's都有一個方便的'.copy()'方法。而且,理解**非常重要,所有python對象**都是這樣運行的,它只是Python中賦值語句的語義。查看Ned Batcheder的[關於Python名稱和值的事實和神話](https://nedbatchelder.com/text/names.html),它詳細解釋了Python中的語義。 –