文章目录
- 一、列表浅拷贝演示
- 列表的浅拷贝的产生
- 列表的浅拷贝的检查
- 什么样的操作会继续共享浅拷贝
- 什么样的操作会破坏共享浅拷贝
- 二、列表乘法所带来的浅拷贝
- 三、二维乘法操作带来横向浅拷贝
- 四、二维乘法操作所带来纵向浅拷贝
一、列表浅拷贝演示
列表的浅拷贝的产生
列表的浅拷贝的检查
什么样的操作会继续共享浅拷贝
什么样的操作会破坏共享浅拷贝
print("===="*5,"等于所带来浅拷贝")
list1 = [1,2,3]
list2 = list1
print("after = ======")
print("打印list1:",list1)
print("打印list2:",list2)
print("List1地址:",id(list1))
print("List2地址:",id(list2))
list1.remove(3)
print("after remove=====")
print("打印list1:",list1)
print("打印list2:",list2)
print("List1地址:",id(list1))
print("List2地址:",id(list2))
list1.append(3)
print("after append=====")
print("打印list1:",list1)
print("打印list2:",list2)
print("List1地址:",id(list1))
print("List2地址:",id(list2))
list1[1] = 0
print("after ele init ==")
print("打印list1:",list1)
print("打印list2:",list2)
print("List1地址:",id(list1))
print("List2地址:",id(list2))
list1[1] = [3,4]
print("after ele init ==")
print("打印list1:",list1)
print("打印list2:",list2)
print("List1地址:",id(list1))
print("List2地址:",id(list2))
list1[0] = [1,2]
print("after ele init ==")
print("打印list1:",list1)
print("打印list2:",list2)
print("List1地址:",id(list1))
print("List2地址:",id(list2))
list1 = [1,2,3,4]
print("after list init ==")
print("打印list1:",list1)
print("打印list2:",list2)
print("List1地址:",id(list1))
print("List2地址:",id(list2))
二、列表乘法所带来的浅拷贝
print("===="*5,"一维乘法操作所带来浅拷贝")
list1 = [1,2,3]
print("打印list1:",list1)
print("List1[0]地址:",id(list1[0]))
print("List1[1]地址:",id(list1[1]))
print("List1[2]地址:",id(list1[2]))
list1 = [0]*3
print("打印list1:",list1)
print("List1[0]地址:",id(list1[0]))
print("List1[1]地址:",id(list1[1]))
print("List1[2]地址:",id(list1[2]))
list1[0] = 1
print("List1[0]地址:",id(list1[0]))
print("List1[1]地址:",id(list1[1]))
print("List1[2]地址:",id(list1[2]))
list1 = [1,2,3]*3
print("打印list1:",list1)
print("List1[0]地址:",id(list1[0]))
print("List1[1]地址:",id(list1[1]))
print("List1[2]地址:",id(list1[2]))
list1[0] = 100
print("打印list1:",list1)
print("List1[0]地址:",id(list1[0]))
print("List1[1]地址:",id(list1[1]))
print("List1[2]地址:",id(list1[2]))
三、二维乘法操作带来横向浅拷贝
print("===="*5,"二维乘法操作所带来横向浅拷贝")
list1 = [[0]]*3
print("打印list1:",list1)
print("List1[0]地址:",id(list1[0]))
print("List1[1]地址:",id(list1[1]))
print("List1[2]地址:",id(list1[2]))
list1[0].append(1)
print("打印list1:",list1)
print("List1[0]地址:",id(list1[0]))
print("List1[1]地址:",id(list1[1]))
print("List1[2]地址:",id(list1[2]))
list1[0][0] = 100
print("打印list1:",list1)
print("List1[0]地址:",id(list1[0]))
print("List1[1]地址:",id(list1[1]))
print("List1[2]地址:",id(list1[2]))
list1[0] = 100
print("打印list1:",list1)
print("List1[0]地址:",id(list1[0]))
print("List1[1]地址:",id(list1[1]))
print("List1[2]地址:",id(list1[2]))
四、二维乘法操作所带来纵向浅拷贝
print("===="*5,"二维乘法操作所带来纵向浅拷贝")
list1 = [[0]*2]*3
print("打印list1:",list1)
print("List1[0]地址:",id(list1[0]))
print("List1[1]地址:",id(list1[1]))
print("List1[2]地址:",id(list1[2]))
list1[0].append(3)
print("打印list1:",list1)
list1[1][1] = [1,2]
print("打印list1:",list1)
print("List1[0]地址:",id(list1[0][1]))
print("List1[1]地址:",id(list1[1][1]))
print("List1[2]地址:",id(list1[2][1]))
list1[1][1][0] = 0
print("打印list1:",list1)
print("List1[0]地址:",id(list1[0][1]))
print("List1[1]地址:",id(list1[1][1]))
print("List1[2]地址:",id(list1[2][1]))
list1[0][1] = 100
print("打印list1:",list1)
print("List1[0]地址:",id(list1[0]))
print("List1[1]地址:",id(list1[1]))
print("List1[2]地址:",id(list1[2]))
list1[0] = 100
print("打印list1:",list1)
print("List1[0]地址:",id(list1[0]))
print("List1[1]地址:",id(list1[1]))
print("List1[2]地址:",id(list1[2]))