Rom*_*man 49 python arrays copy object variable-assignment
X是一个2D数组.我想要一个Y与数组具有相同值的新变量X.而且,对Y的任何进一步操作都不应该影响X的值.
在我看来这么自然使用y = x.但它不适用于数组.如果我这样做然后改变y,x也会改变.我发现问题可以像这样解决:y = x[:]
但它不适用于2D阵列.例如:
x = [[1,2],[3,4]]
y = x[:]
y[0][0]= 1000
print x
Run Code Online (Sandbox Code Playgroud)
回报[ [1000, 2], [3, 4] ].它还如果我更换于事无补y=x[:]的y = x[:][:].
有人知道什么是正确而简单的方法吗?
Rya*_* Ye 67
使用deepcopy()或copy()是一个很好的解决方案.对于简单的2D阵列情况
y = [row[:] for row in x]
Run Code Online (Sandbox Code Playgroud)
Con*_*ius 49
试试这个:
from copy import copy, deepcopy
y = deepcopy(x)
Run Code Online (Sandbox Code Playgroud)
我不确定,也许copy()已经足够了.
对于2D数组,可以使用map函数:
old_array = [[2, 3], [4, 5]]
# python2.*
new_array = map(list, old_array)
# python3.*
new_array = list(map(list, old_array))
Run Code Online (Sandbox Code Playgroud)