如何在Python中复制二维数组?
X
是一个二维数组。我想要一个新的变量 Y
,它的值和数组 X
一样。而且,对 Y
的任何后续操作都不应该影响 X
的值。
我觉得用 y = x
来实现这个很自然,但对于数组来说,这样做是行不通的。如果我这样做了,然后修改了 y
,那么 x
也会被改变。我发现可以这样解决这个问题:y = x[:]
但这对于二维数组也不管用。例如:
x = [[1,2],[3,4]]
y = x[:]
y[0][0]= 1000
print x
返回的结果是 [ [1000, 2], [3, 4] ]
。如果我把 y=x[:]
替换成 y = x[:][:]
,也没有帮助。
有没有人知道一个合适且简单的方法来做到这一点?
5 个回答
14
对于二维数组,可以使用map函数:
old_array = [[2, 3], [4, 5]]
# python2.*
new_array = map(list, old_array)
# python3.*
new_array = list(map(list, old_array))
135
使用deepcopy()或copy()是个不错的解决办法。对于简单的二维数组情况,
y = [row[:] for row in x]
88