1 copy
import copy
a=[1,2,3]
b=a
print(id(a))#打印在硬盘中的位置
print(id(b))
print(id(a)==id(b))#true
#a b里的值一模一样
c=copy.copy(a)
print(id(a)==id(c)) #false 浅复制 c改变a不会改变
运行结果:
D:\PycharmProjects\pythonProject\venv\Scripts\python.exe D:/PycharmProjects/pythonProject/hello.py
2281836904896
2281836904896
True
False
Process finished with exit code 0
2 deepcopy
import copy
a=[1,2,[3,4]]
b=copy.copy(a)
print(id(a)==id(b)) #false
print(id(a[2])==id(b[2])) #true 虽然第一层列表不是在同一个空间了 但是第二层列表还是指向同一个空间
a[0]=11
print(b)#b不变
a[2][1]=333
print(b) #改变了
#如果不想出现这种情况的话
e=copy.deepcopy(a)
print(id(a[2])==id(e[2])) #false 解决了
运行结果:
D:\PycharmProjects\pythonProject\venv\Scripts\python.exe D:/PycharmProjects/pythonProject/hello.py
False
True
[1, 2, [3, 4]]
[1, 2, [3, 333]]
False
Process finished with exit code 0
3 完全同一个空间
a==b #ab完全指向同一个空间