标签:复制 切片 code pytho 不同的 方法 拷贝 不能 print
要搞懂这三个概念,将下面三个程序自己测试一遍就行。
a = 1
b = a
print(id(a), id(b))
print(a,b)
140716855894416 140716855894416
1 1
#只拷贝一层
jack = ["jack",[‘age‘,20]]
tom = jack[:] # 切片
nick = list(jack) # 工厂方法
print(jack,tom,nick) # 内容相同
print(id(jack), id(tom),id(nick)) #指向不同的ID了
# 年龄是一个嵌套列表,在第二层
# 假如只修改tom的年龄为18
tom[0] = "tom"
nick[0] = "nick" # 第一层单独变化
tom[1][1] = 18
print(jack,tom,nick) # 结果三个的年龄都变了,
print(id(jack[1]), id(tom[1]),id(nick[1])) # 第二层,ID值相同,说明浅拷贝,存在嵌套的情况,是不能单独修改各自的值得
[‘jack‘, [‘age‘, 20]] [‘jack‘, [‘age‘, 20]] [‘jack‘, [‘age‘, 20]]
2105435611848 2105436845192 2105469646856
[‘jack‘, [‘age‘, 18]] [‘tom‘, [‘age‘, 18]] [‘nick‘, [‘age‘, 18]]
2105435527176 2105435527176 2105435527176
# 拷贝了对象的所有元素
import copy
jack = ["jack",[‘age‘,20]]
tom = copy.deepcopy(jack)
nick = copy.deepcopy(jack)
tom[0] = "tom"
nick[0] = "nick" # 第一层单独变化
tom[1][1] = 18 # 第二层也单独变化
print(jack,tom ,nick )
[‘jack‘, [‘age‘, 20]] [‘tom‘, [‘age‘, 18]] [‘nick‘, [‘age‘, 20]]
标签:复制 切片 code pytho 不同的 方法 拷贝 不能 print
原文地址:https://www.cnblogs.com/sinlearn/p/13060936.html