栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python 列表一深浅拷贝

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python 列表一深浅拷贝

引言

拷贝拷贝,就拿硬盘来举个例子,例如:你朋友的硬盘里一些好康的东西,你可以通过复制粘贴的方式把它弄到你的电脑里边。

列表引用

可以看到我下边把 l1 的值赋值给了 l2 ,但是修改 l1 的值之后 l2 也发生了变化。在python创建数据(l1)的时候,会在计算机存储中开辟一块新的空间用于存放数据,而之后(l2)进行的操作仅仅是调用、引用而已。

l1 = [1,2,3]
l2 = l1

l1[0] = 'a'
l1[-1] = ['a','b']

print(l1)
<<<< ['a', 2, ['a', 'b']]
print(l2)
<<<< ['a', 2, ['a', 'b']]
列表的浅拷贝

浅拷贝之后可以看到,我们在修改 l1 的值 l2 没有发生改变

l1 = [1,2,3]
# 利用切片的方式来对列表进行浅拷贝
l2 = l1[:]
l1[0] = 'a'

print(l1)
<<<< ['a', 2, 3]
print(l2)
<<<< [1, 2, 3]

但是浅拷贝就是相当于把整个父级目录拷贝下来而已,可以看到我在下边改变了 l1 内子列表的值,l2 也会发生改变

l1 = [1,2,3,['a','b']]
l2 = l1[:]

l1[0] = 'a'
l1[-1][0] = 1

print(l1)
<<<< ['a', 2, 3, [1, 'b']]
print(l2)
<<<< [1, 2, 3, [1, 'b']]
列表的深拷贝

如果想要对列表进行深拷贝,需要用到python 的内置模块copy

import copy
l1 = [1,2,3,['a','b']]
# 可以看到利用copy进行拷贝之后,在修改l1 的值 l2 并没有发生变化。
l2 = copy.deepcopy(l1)
l1[-1][0] = 1

print(l1)
<<<< [1, 2, 3, [1, 'b']]
print(l2)
<<<< [1, 2, 3, ['a', 'b']]

总结

对于深浅拷贝,这玩意其实不用记太多,了解就好了,如果以后忘记了怎么办,大家可以点下边的那个收藏按钮以备不时之需。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/925937.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号