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中的语义。 –