l1 = [1,2,3,4]
l2 = l1
print(l1,l2) #[1, 2, 3, 4] [1, 2, 3, 4]
print(id(l1),id(l2)) #35071112 35071112
#赋值时,两组数据一致,ID一致,
l1.append(5)
print(l1,l2) #[1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
print(id(l1),id(l2)) #31400968 31400968
#赋值时,两组数据一致,ID一致,原数据变化后都随之变化
l1 = [1,2,3,4]
l2 = [1,2,3,4]
print(l1,l2) #[1, 2, 3, 4] [1, 2, 3, 4]
print(id(l1),id(l2)) #35070984 35071112
#相等时,两组数据展示一致,ID并不一致,
l1.append(5)
print(l1,l2) #[1, 2, 3, 4, 5] [1, 2, 3, 4]
#相等时,ID不一致,yi数据一组,二组的不变
l1 = [1,2,3,[4,5,6]]
#第一层创建的是新的内存地址。从第二层开始,不可变量指向的是同一个内存地址,可变量指向也相同,同时第二层变化就都随之变化。
l2 = l1.copy()
l1.append(7) #不可变量变化时,原数据变化,拷贝的数据不变
print(l1) #[1, 2, 3, [4, 5, 6], 7]
print(l2) #[1, 2, 3, [4, 5, 6]]
l1[3].append(7) #可变量变化时都变化
print(l1) #[1, 2, 3, [4, 5, 6, 7]]
print(l2) #[1, 2, 3, [4, 5, 6, 7]]
#完全独立的copy一份数据,与原数据无关系。
import copy
l2 = copy.deepcopy(l1)
l1.append(7) #不可变量变化时,原数据变化,拷贝的数据不变
print(l1) #[1, 2, 3, [4, 5, 6], 7]
print(l2) #[1, 2, 3, [4, 5, 6]]
l1[3].append(7) #可变量变化时也不变化
print(l1) #[1, 2, 3, [4, 5, 6, 7]]
print(l2) #[1, 2, 3, [4, 5, 6]]