def idseach():
a = [1, [1, 2, 3, 4], 3, 4, 5]
c = []
c[:] = a[:]
print(id(a[1]))
print(id(c[1]))
a[0] = 2
print(a, id(a), id(a[1]))
print(c, id(c), id(c[1]))
>>>
4322738952
4322738952
[2, [1, 2, 3, 4], 3, 4, 5] 4321320712 4322738952
[1, [1, 2, 3, 4], 3, 4, 5] 4322877640 4322738952
# 此复制方法可以实现c和a一级数据的深拷贝
def idseach():
a = [1, [1, 2, 3, 4], 3, 4, 5]
c = []
c[:] = a[:]
print(id(a[1]))
print(id(c[1]))
# 对嵌套列表数据进行改变
c[1].append(1)
print(a, id(a), id(a[1]))
print(c, id(c), id(c[1]))
>>>
4322738952
4322738952
[2, [1, 2, 3, 4, 1], 3, 4, 5] 4321320712 4322738952
[1, [1, 2, 3, 4, 1], 3, 4, 5] 4322877640 4322738952
# 由此可见,此方法无法对二级数据进行深拷贝,C[1] 和a[1] 的地址一致
如何实现二级数据的改变呢
一种方式:
def idseach():
a = [1, [1, 2, 3, 4], 3, 4, 5]
print(id(a))
a.append(0)
print