一文带你解决python中深拷贝、浅拷贝、nums[:]

1.深拷贝与浅拷贝

        你只需要记住一句话:浅拷贝只会拷贝父对象,不会拷贝对象的内部的子对象。

        如果上面那句话听不懂,只用记住这句话:浅拷贝只拷贝一层。

        举例:

        下图1中a是原对象,c是浅拷贝。a同时append(5)操作和a[4].append('c')操作。c只执行了a[4].append('c')操作。d是深拷贝,d执行了全部操作。

        好了,我的讲解结束。回忆一下,我做开始说的话:浅拷贝只拷贝一层

一文带你解决python中深拷贝、浅拷贝、nums[:]_第1张图片一文带你解决python中深拷贝、浅拷贝、nums[:]_第2张图片

2.nums[:] 

        这个只需要记住一句话: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)

一文带你解决python中深拷贝、浅拷贝、nums[:]_第3张图片

 上面两张图和下面两张图对比一下:

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)

 一文带你解决python中深拷贝、浅拷贝、nums[:]_第4张图片

 

你可能感兴趣的:(开发语言,python)