你只需要记住一句话:浅拷贝只会拷贝父对象,不会拷贝对象的内部的子对象。
如果上面那句话听不懂,只用记住这句话:浅拷贝只拷贝一层。
举例:
下图1中a是原对象,c是浅拷贝。a同时append(5)操作和a[4].append('c')操作。c只执行了a[4].append('c')操作。d是深拷贝,d执行了全部操作。
好了,我的讲解结束。回忆一下,我做开始说的话:浅拷贝只拷贝一层
这个只需要记住一句话:nums[:]=list1,只会对nums[:]中的值操作,不会对地址操作。
nums=list1,使得nums指向了list1的地址,改变了nums原来的地址。
nums=[1,2,3,4]
list1=[3,4,5]
nums=list1
print("nums_id:",id(nums))
print("list1_id",id(list1))
nums[:]=list1
print("nums_id:",id(nums))
print("nums",nums)
上面两张图和下面两张图对比一下:
nums=[1,2,3,4]
list1=[3,4,5]
# nums=list1
print("nums:",nums)
print("nums_id:",id(nums))
print("list1_id",id(list1))
nums[:]=list1
print("nums_id:",id(nums))
print("nums",nums)