
python如何让二维数组复制
用户关注问题
如何在Python中复制二维数组而不影响原数组?
我想在Python中创建一个二维数组的副本,但修改副本时不想影响到原数组,应该怎么做?
使用深拷贝复制二维数组
在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]]
list切片能不能用来复制二维数组?
我尝试用切片操作copy = original[:]来复制二维数组,结果修改copy也改变了original,这是为什么?
切片复制仅是浅拷贝,不能复制内部列表
使用list的切片方法得到的是浅拷贝,这种复制只复制最外层列表的引用,内部嵌套的列表仍然是共享的。所以修改复制的二维数组内部元素时,原数组也会受到影响。如果需要独立复制整个二维数组,需要使用深拷贝。
如何用列表推导式复制二维数组?
除了使用copy.deepcopy,还有其他方法能复制二维数组吗?比如用列表推导式实现复制?
利用列表推导式实现二维数组的深拷贝
可以用列表推导式复制二维数组的每个子列表,从而达到深拷贝的效果。例如:
original = [[1,2],[3,4]]
copied = [row[:] for row in original]
这样,copied中的每个子列表都是原数组对应子列表的独立副本,修改copied不会影响原数组。