【Python】拷贝

在Python中,拷贝对象可以通过几种方式实现,包括使用内置的复制操作符、copy模块中的函数。

1.使用内置的复制操作符

Python内置了复制操作符[:],用于复制序列(如列表、字符串、元组)。对于其他类型的对象,这个操作符可能不起作用,需要使用其他方法。

list1 = [1, 2, [3, 4]]
list2 = list1[:]  # 浅拷贝

list2[0] = 100  
list2[2][0] = 100 

print('list1:', list1)  # list1: [1, 2, [100, 4]]
print('list2:', list2)  # list2: [100, 2, [100, 4]]

2. 使用 copy 模块的 copy() 函数

copy模块提供了一个copy()函数,可以用来创建对象的浅拷贝。浅拷贝会复制对象本身以及它的引用属性,但如果对象包含其他对象(如列表中的列表),则这些对象的引用不会被复制,仍然指向原来的对象。

import copy

list1 = [1, 2, [3, 4]]
list2 = copy.copy(list1)  # 浅拷贝
list2[0] = 100
list2[2][0] = 100

print('list1:', list1)  # list1: [1, 2, [100, 4]]
print('list2:', list2)  # list2: [100, 2, [100, 4]]

3. 使用 copy 模块的 deepcopy() 函数

deepcopy()函数创建对象的深拷贝。深拷贝会递归地复制对象以及它包含的所有子对象,因此原始对象和复制对象之间不会有任何引用关系。

import copy

list1 = [1, 2, [3, 4]]
list2 = copy.deepcopy(list1)  # 深拷贝
list2[0] = 100 
list2[2][0] = 100  
print('list1:', list1)  # list1: [1, 2, [3, 4]]
print('list2:', list2)  # list2: [100, 2, [100, 4]]

总结

  • 浅拷贝:会复制对象本身以及它的引用属性,但如果对象包含其他对象(如列表中的列表),则这些对象的引用不会被复制,仍然指向原来的对象。
  • 深拷贝:会递归地复制对象以及它包含的所有子对象,因此原始对象和复制对象之间不会有任何引用关系。
  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值