import copy
a = [1, 2, 3, 4, ['a', 'b']]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
a.append(5)
a[4].append('c')
if __name__ == '__main__':
for item in (a,b,c,d):
print(item)
print(a[0])
[1, 2, 3, 4, ['a', 'b', 'c'], 5]
[1, 2, 3, 4, ['a', 'b', 'c'], 5]
[1, 2, 3, 4, ['a', 'b', 'c']]
[1, 2, 3, 4, ['a', 'b']]
-
现 列表的地址为0x01,列表内部 「列表(内)」的地址为0x02,列表内部第5位只是一个指向0x02的引用。
a = b 时,a,b均指向 0x01 -
c = copy(a)时,浅拷贝新建了一个「列表(外)-2」地址位0x03,「列表(内)」的地址仍为0x02。
ab指向0x01,c指向0x03,但是「列表(内)」均指向0x03 -
d=deepcopy(a) 是,列表内与外都是新开辟的内存,分别为0x05,0x04。
-
a.append(5) 对0x01的数据进行改动
a[4].append(c) 对0x03的数据进行改动
网友评论