马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
本帖最后由 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、 实现浅拷贝有那么多方法,到底我应该用那一个?殊途同归,条条大路通罗马。
|