python如何让二维数组复制

python如何让二维数组复制

作者:Elara发布时间:2026-01-14阅读时长:0 分钟阅读次数:4

用户关注问题

Q
如何在Python中复制二维数组而不影响原数组?

我想在Python中创建一个二维数组的副本,但修改副本时不想影响到原数组,应该怎么做?

A

使用深拷贝复制二维数组

在Python中,直接赋值会让两个变量指向同一个二维数组对象。使用copy模块中的deepcopy函数,可以创建一个独立的二维数组副本,修改副本时不会影响原数组。例如:

import copy
original = [[1,2],[3,4]]
copied = copy.deepcopy(original)
copied[0][0] = 99
print(original)  # 输出 [[1, 2], [3, 4]]
print(copied)    # 输出 [[99, 2], [3, 4]]
Q
list切片能不能用来复制二维数组?

我尝试用切片操作copy = original[:]来复制二维数组,结果修改copy也改变了original,这是为什么?

A

切片复制仅是浅拷贝,不能复制内部列表

使用list的切片方法得到的是浅拷贝,这种复制只复制最外层列表的引用,内部嵌套的列表仍然是共享的。所以修改复制的二维数组内部元素时,原数组也会受到影响。如果需要独立复制整个二维数组,需要使用深拷贝。

Q
如何用列表推导式复制二维数组?

除了使用copy.deepcopy,还有其他方法能复制二维数组吗?比如用列表推导式实现复制?

A

利用列表推导式实现二维数组的深拷贝

可以用列表推导式复制二维数组的每个子列表,从而达到深拷贝的效果。例如:

original = [[1,2],[3,4]]
copied = [row[:] for row in original]

这样,copied中的每个子列表都是原数组对应子列表的独立副本,修改copied不会影响原数组。