Bootstrap

python中的深浅拷贝和切片

python中的深浅拷贝和切片的理解

深拷贝

#导入拷贝模块
import copy

list01 = [100,[200,300]]
#深拷贝:不光会复制地址,会把对象也复制一份给新的变量(地址)
#深拷贝:新拷贝出的地址+对象和原先的地址+对象互不影响
#注意:深拷贝相对占用更多内存(原数据很大的情况下,可能占很多内存)
list02 = copy.deepcopy(list01)
list01[1][0] = 500
print(list01)	#[100,[500,300]]
print(list02)	#[100,[200,300]]

浅拷贝

import copy
list01 = [100,[200,300]]
#浅拷贝:只是复制出一个新的地址,两个地址绑定的是同一个对象
lsit02 = list01.copy()
#修改对象本身
list01[1][0] = 500
print(list02[1][0]	#也是500
list01 = ['三丰','翠山',"无忌"]

#复制list01这个地址给list02,这两个地址绑定的是同一个对象
list02 = list01
#对象本身修改
list01[0] = '五丰'
print(list02[0])	#也变成了'五丰'

切片

切出新的对象,该对象的值和原来是一样的

lsit01 = [800,900,1000]
#切片相当于将list01的对象又单独复制出一份,但值是一样的
list02 = list01[:]
list01[0] = '八百'
print(list02[0])	#打印出还是800

切片赋值:对原序列进行操作,不会生成新的序列,赋的值必须是可迭代对象(单个整型这种不行)

list01 = [0,1,2]
list01[1:2] = ['A','B']	#切片赋值
list01[1:2] = ['ytx']
print(list01)	#[0,'ytx',2]赋值成功
;