加载中...

深浅拷贝

当然,我可以帮你将这些Python代码转化为Markdown格式的笔记。以下是你的Markdown笔记:


Python中的深浅拷贝

在Python中,我们可以使用深浅拷贝来复制对象。深拷贝和浅拷贝的主要区别在于,对于复合对象(如列表、字典等),深拷贝会创建一个新的复合对象,并且递归地复制原对象中的所有元素,而浅拷贝只会创建一个新的复合对象,但不会复制元素,而是复制元素的引用。

1. 浅拷贝

浅拷贝只拷贝一级容器中的所有元素独立出一个单独的空间。

import copy

# 方法一
lst1 = [1,2,3]
lst2 = copy.copy(lst1)
lst1.append(10)
print(lst2)  # 输出:[1, 2, 3]
print(lst1)  # 输出:[1, 2, 3, 10]

# 方法二
lst1 = [1,2,3]
lst2 = lst1.copy()
lst1.append(11)
print(lst1)  # 输出:[1, 2, 3, 11]
print(lst2)  # 输出:[1, 2, 3]

2. 深拷贝

深拷贝把所有层级的容器中所有元素都单独拷贝一份,形成独立的空间。

import copy

lst1 = [1,2,3,[4,5,6]]
lst2 = copy.deepcopy(lst1)
lst1[-1].append(999)
print(lst2)  # 输出:[1, 2, 3, [4, 5, 6]]
print(lst1)  # 输出:[1, 2, 3, [4, 5, 6, 999]]

# 其他容器的深拷贝
lst1 = (1,2,3,{"a":1,"b":[10,20]})
lst2 = copy.deepcopy(lst1)
lst1[-1]["b"].append(30)
print(lst1)  # 输出:(1, 2, 3, {'a': 1, 'b': [10, 20, 30]})
print(lst2)  # 输出:(1, 2, 3, {'a': 1, 'b': [10, 20]})

希望这个Markdown笔记对你有所帮助!

posted @ 2024-03-01 18:24  江寒雨  阅读(29)  评论(0)    收藏  举报