如何在Python中复制二维数组?

96 投票
5 回答
134500 浏览
提问于 2025-04-16 20:35

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

试试这个:

from copy import copy, deepcopy
y = deepcopy(x)

我不太确定,也许copy()就够用了。

撰写回答