为了测试 lst1 是否是 lst2 的浅拷贝,我这样做了:
def check_shallow_copy(lst1, lst2):
''' Return True if lst1 is a shallow copy of lst2.
Return False if not.
'''
for idx in range(len(lst1)):
if lst1 == lst2 and id(lst1[idx]) == id(lst2[idx]) and lst1 is not lst2:
return True
else:
return False
但是,如果两个列表共享第一个元素的副本,但不共享其他任何元素,我认为这不会起作用。如何更改函数以使所有索引的 id(lst1[idx]) 必须与 id(lst2[idx]) 相同?
另外,对于浅拷贝和深拷贝的区别,我还是有点模糊。如果我想让这个函数测试 lst1 是否是 lst2 的深层副本,我应该做哪些修改?
谢谢!