Python学习第十七天—列表5浅拷贝和深拷贝

[复制链接]
15271953841 发表于 2024-2-10 07:29:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
本帖最后由 15271953841 于 2024-2-21 06:25 编辑

Python 3.12.1 (tags/v3.12.1:2305ca5, Dec  7 2023, 22:03:25) [MSC v.1937 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
x=[1,2,3]
y=x
x[1]=1
x
[1, 1, 3]
y
[1, 1, 3]
Python的变量不是盒子,就是一个名字,一个标签,通过这个变量就可以找到对应的数据。
Python不是把数据放到变量里面去,而是将变量与数据进行挂钩,这个行为我们称之为引用。
将一个变量赋值给另一个变量,就是将一个变量的引用传递给另一个变量。
如果想得到两个独立的列表,还是要用到拷贝来完成任务。

浅拷贝
x=[1,2,3]
y=x.copy()
x
[1, 2, 3]
x[1]=1
x
[1, 1, 3]
y
[1, 2, 3]
x=[1,2,3]
y=x[:]
x[1]=1
x
[1, 1, 3]
y
[1, 2, 3]
x=[4,5,6]
y=x[:]
x[1]=0
x
[4, 0, 6]
y
[4, 5, 6]
以上两种方法是浅拷贝。
深拷贝和浅拷贝
x=[[1,2,3],[4,5,6],[7,8,9]]
y=x.copy()
x[1][1]=0
x
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]
y
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]
x=[[1,2,3],[4,5,6],[7,8,9]]
y=x[:]
x[1][1]=1
x
[[1, 2, 3], [4, 1, 6], [7, 8, 9]]
y
[[1, 2, 3], [4, 1, 6], [7, 8, 9]]
x.copy()方法是浅拷贝,浅拷贝只是拷贝了外层对象,如果包含嵌套对象的话,那么拷贝的只是其引用。
深拷贝,要运用到copy模块,这个模块有两函数,一个是copy.copy(),实现的还是浅拷贝;另一个是copy.deepcopy(),实现的是深拷贝;要使用这个模块,必须先导入。

import copy
x=[[1,2,3],[4,5,6],[7,8,9]]
y=copy.copy(x)
x[1][1]=0
x
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]
y
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]
x=[[1,2,3],[4,5,6],[7,8,9]]
y=copy.deepcopy(x)
x[1][1]=1
x
[[1, 2, 3], [4, 1, 6], [7, 8, 9]]
y
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
1、        什么是方法?什么是函数?类和对象
2、        实现浅拷贝有那么多方法,到底我应该用那一个?殊途同归,
条条大路通罗马。

关注公众号

相关侵权、举报、投诉及建议等,请发 E-mail:admin@discuz.vip

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|鄂ICP备13007585号-4

在本发帖
关注公众号
QQ客服返回顶部