学习笔记:Python之赋值、浅拷贝和深拷贝

赋值、浅拷贝和深拷贝

  • 赋值
  • 浅拷贝
  • 深拷贝

赋值

赋值:本质上就是对象的引用

l1 = [1,2,3,4,5,6]
print(l1)
l2 = l1
print(l1,l2)
l2[2] = 'asd'
print(l1,l2)

在运行以上代码时,会发现l1和l2的值总是一致的
开始只是对l1进行了赋值,后面把l1赋值给了l2
按照正常理解,两个内容应该互不相关,但实际上的输出却总是一致
这是因为l2 = l1赋值后,l2的内容也是引用的l1这个对象,所以两个内容的输出才总是一致的

浅拷贝

为了让赋值后的l1和l2互不冲突,就产生了拷贝
拷贝有深拷贝和浅拷贝
浅拷贝适用于一位列表数据,在面对二维数据时却失去了作用

l3 = [56,96,91,62,26,31,46]
l4 = l3.copy()
# 刚拷贝完的数据是相同
print(l3,l4)
l3[2] = 'asdf'
# 在修改完数据后,可以发现,两个数据已经不同了
print(l3,l4)

# 二维列表
l5 = [1,2,3,[5,6,7],8,9]
l6 = l5
print(l5,l6)
# 修改列表的一维数据
l5[1] = 111
# 这时可以发现,l5和l6的数据在修改的地方是不同的
print(l5,l6)
l5[3][0] = 20
# 这里修改了二维部分的一个数据,可以发现修改后的部分仍然相同的
print(l5,l6)

深拷贝

在拷贝多维数据时,为了不影响原数据,需要用到深拷贝

# 使用深拷贝需要导入一个拷贝的模块
import copy
l7 = [1,2,3,[4,5,6],7,8,9]
l8 = copy.deepcopy(l7)
print(l7,l8)
l7[3][1] = 'asd'
print(l7,l8)

你可能感兴趣的:(Python基础学习,python,学习,开发语言)