#当s1发生变化的时候,s2也会发生变化.因s1和s2共用的一个内存空间
s1 = [1,2,3]
s2 = s1 #共用一个内存空间
s1.append(666)
print(id(s1),id(s2))
531374449032 531374449032 #由此可见两个内存地址是一样的
#浅copy 第一层各自独立,从第二层开化寺,共用一个内存地址
s1 = [1,2,3,[11,22]]
s2 = s1.copy()
s1[-1].append(666)
print(id(s1),id(s2))
print(id(s1[-1]),id(s2[-1]))
562364837576 562361510984
562364981640 562364981640
#深copy 无论这个列表嵌套多少层,互相都是独立的,互不影响
import copy
s1 = [1,2,3,[11,22]]
s2 = copy.deepcopy(s1)
s1.append(666)
print(s1,s2)
s1 = [1,2,3,[11,22]]
s2 = copy.deepcopy(s1)
s1[-1].append(666)
print(s1,s2)
[1, 2, 3, [11, 22, 666]] [1, 2, 3, [11, 22]]
[1, 2, 3, [11, 22], 666] [1, 2, 3, [11, 22]]
# 当遇到切片是深copy还是浅copy呢?
s1 = [1,2,3,[11,22]]
s2 = s1[:]
s1.append(666)
print(s1,s2)
[1, 2, 3, [11, 22],666] [1, 2, 3, [11, 22]]
s1 = [1,2,3,[11,22]]
s2 = s1[:]
s1[-1].append(666)
print(s1,s2)
[1, 2, 3, [11, 22, 666]] [1, 2, 3, [11, 22, 666]]
由此可见为浅copy