龙空技术网

python的深拷贝和浅拷贝

有灵魂的程序猿 78

前言:

目前咱们对“浅拷贝 深拷贝 python”大体比较重视,大家都需要学习一些“浅拷贝 深拷贝 python”的相关知识。那么小编在网上汇集了一些有关“浅拷贝 深拷贝 python””的相关知识,希望兄弟们能喜欢,兄弟们快快来学习一下吧!

深拷贝和浅拷贝

1. 浅拷贝(Shallow Copy):

浅拷贝创建一个新的对象,但是这个对象中的元素是原对象中元素的引用。

修改原对象中的元素会影响到浅拷贝创建的对象,因为它们引用的是同一个内存地址。

#!/usr/bin/python# Write Python 3 code in this online editor and run it.import copy# 原始列表original_list = [1, 2, [3, 4]]print("Original List:", original_list)# 使用浅拷贝创建副本shallow_copy = copy.copy(original_list)# 修改原始列表的子列表original_list[2][0] = 'a'# 打印浅拷贝和原始列表print("Original List:", original_list)print("Shallow Copy:", shallow_copy)

结果:

Original List: [1, 2, [3, 4]]

Original List: [1, 2, ['a', 4]]

Shallow Copy: [1, 2, ['a', 4]]

2. 深拷贝(Deep Copy):

深拷贝创建一个新的对象,并且递归地复制原对象中的所有引用对象。

修改原对象中的元素不会影响到深拷贝创建的对象,因为它们引用的是不同的内存地址。

#!/usr/bin/python# Write Python 3 code in this online editor and run it.import copy# 原始列表original_list = [1, 2, [3, 4]]# 使用深拷贝创建副本deep_copy = copy.deepcopy(original_list)# 修改原始列表的子列表original_list[2][0] = 'a'# 打印深拷贝和原始列表print("Original List:", original_list)print("Deep Copy:", deep_copy)

结果:

Original List: [1, 2, ['a', 4]]

Deep Copy: [1, 2, [3, 4]]

深拷贝和浅拷贝在不同的场景下的应用。

浅拷贝的应用场景:

当对象比较简单,且不包含可变对象(如列表、字典等)时,可以使用浅拷贝来复制对象。

在需要节约内存空间或者复制速度的情况下,浅拷贝是一个不错的选择。

深拷贝的应用场景:

当对象包含了可变对象(如嵌套的列表、字典等)时,为了确保副本的完全独立性,需要使用深拷贝。

在需要对原始对象和副本对象进行完全独立的操作时,深拷贝是必要的。

标签: #浅拷贝 深拷贝 python #python浅拷贝和赋值 #python的浅拷贝