高端画册定制印刷公司,seo优化基础教程pdf,网站的透明图片怎么做,自己制作的网页别人如何访问1.赋值: 只是复制了新对象的引用#xff0c;不会开辟新的内存空间。 2.浅拷贝: 创建新对象#xff0c;其内容是原对象的引用。 浅拷贝有三种形式#xff1a;切片操作#xff0c;工厂函数#xff0c;copy模块中的copy函数。 如#xff1a; lst [1,2,3,[4,5]] … 1.赋值: 只是复制了新对象的引用不会开辟新的内存空间。 2.浅拷贝: 创建新对象其内容是原对象的引用。 浅拷贝有三种形式切片操作工厂函数copy模块中的copy函数。 如 lst [1,2,3,[4,5]] 切片操作lst1 lst[:] 或者 lst1 [each for each in lst] 要注意:list1lst 和list1lst[:]的区别 工厂函数lst1 list(lst) copy函数lst1 copy.copy(lst) 浅拷贝之所以称为浅拷贝是它仅仅只拷贝了一层在lst中有一个嵌套的list[4,5]如果我们修改了它情况就不一样了。 3.深拷贝只有一种形式copy模块中的deepcopy函数。 和浅拷贝对应深拷贝拷贝了对象的所有元素包括多层嵌套的元素。 深拷贝出来的对象是一个全新的对象不再与原来的对象有任何关联。
import copy
a [1, 2, 3, 4, [a, b]] #定义一个列表a
b a #赋值
c copy.copy(a) #浅拷贝
# c a[:]
d copy.deepcopy(a) #深拷贝a.append(5)
print(a)
#[1, 2, 3, 4, [a, b], 5] #a添加一个元素5
print(b)
#[1, 2, 3, 4, [a, b], 5] #b跟着添加一个元素5
print(c)
#[1, 2, 3, 4, [a, b]] #c保持不变
print(d)
#[1, 2, 3, 4, [a, b]] #d保持不变a[4].append(c)
print(a)
#[1, 2, 3, 4, [a, b, c], 5] #a中的list(即a[4])添加一个元素c
print(b)
#[1, 2, 3, 4, [a, b, c], 5] #b跟着添加一个元素c
print(c)
#[1, 2, 3, 4, [a, b, c]] #c跟着添加一个元素c
print(d)
#[1, 2, 3, 4, [a, b]] #d保持不变#说明如下
#1.外层添加元素时 浅拷贝c不会随原列表a变化而变化内层list添加元素时浅拷贝c才会变化。
#2.无论原列表a如何变化深拷贝d都保持不变。
#3.赋值对象随着原列表一起变化
参考:
(1).https://www.cnblogs.com/huangbiquan/p/7795152.html (Python中的赋值(复制)、浅拷贝、深拷贝之间的区别
(2).https://www.cnblogs.com/xueli/p/4952063.html(python的复制深拷贝和浅拷贝的区别)