Python中的深拷贝和浅拷贝

一、概述:

Python中拷贝的方法有两种:

  1. 浅拷贝:copy()
  2. 深拷贝:copy.deepcopy()

二、理解深拷贝和浅拷贝

2.1 拷贝的应用

浅拷贝

# 原始数据
list1 = ["php", "java", "python"]
# 对list进行复制-->list2
list2 = list1.copy()

# 查看id值/内存地址
print(list2)  # ['php', 'java', 'python']
print("list2:", id(list2))  # list2: 1798099903936
print("list1:", id(list1))  # list1: 1798100127552

深拷贝

# 导包
import copy

# 原始数据
list1 = ["php", "java", "python"]

# 对list进行复制-->list2
list2 = copy.deepcopy(list1)

# 查看id值/内存地址
print(list2)  # ['php', 'java', 'python']
print("list2:", id(list2))  # list2: 1798099903936
print("list1:", id(list1))  # list1: 1798100127552

2.2 关联关系

1、浅拷贝数据时,原始数据a,拷贝数据b,“可变和不可变数据”都会指向同一内存地址id

   1.1 当修改b中“可变数据类型”数据时,其id不会变,这时a中的对应数据也会随着变更

   1.2 当修改b中“不可变数据类型”不数据时,其id会变,这时a中的对应数据不会随着变更

2、深拷贝数据时,原始数据a,拷贝数据b;

     不可变数据类型指向同一id,可变数据类型指向不同id

   2.1 当修改b中“不可变数据类型”时,修改的数据id会变更,这时a中的对应数据不会随着变更,不影响a中的数据(修改不可变类型与浅拷贝一致,都不会影响原始数据)

   2.2 当修改b中“可变数据类型”不数据时,因为深拷贝对于可变数据指向了不同的id,所以修改数据互补影响

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值