前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python列表中的赋值与深浅拷贝

python列表中的赋值与深浅拷贝

作者头像
py3study
发布2020-01-19 17:25:20
8910
发布2020-01-19 17:25:20
举报
文章被收录于专栏:python3python3

首先创建一个列表

a=[[1,2,3],4,5,6]

一、赋值

代码语言:javascript
复制
a=[[1,2,3],4,5,6]
b=a
a[0][1]='tom'
print(a)
print(b)
结果:

[[1, 'tom', 3], 4, 5, 6] [[1, 'tom', 3], 4, 5, 6]

代码语言:javascript
复制
a=[[1,2,3],4,5,6]
b=a
b[0][1]='tom'
print(a)
print(b)
结果:
[[1, 'tom', 3], 4, 5, 6]
[[1, 'tom', 3], 4, 5, 6]
总结:赋值不管是对a列表改变还是对b列表改变,
只要改变其中一个,另一个也会跟着变,这是因为a
和b共用一块内存,没有创建新的内存,
他们是相同的,他们指向同一个内存区域。

二、浅拷贝  [:]or copy()
代码语言:javascript
复制
a=[[1,2,3],4,5,6]
b=a.copy()
b[0][1]='tom'
print(a)
print(b)
结果: 

  [[1, 'tom', 3], 4, 5, 6]     [[1, 'tom', 3], 4, 5, 6]

代码语言:javascript
复制
a=[[1,2,3],4,5,6]
b=a.copy()
a[0][1]='tom'
print(a)
print(b)
结果:
[[1, 'tom', 3], 4, 5, 6]
[[1, 'tom', 3], 4, 5, 6]
代码语言:javascript
复制
a=[[1,2,3],4,5,6]
b=a.copy()
b[1]='tom'
print(a)
print(b)
结果:

[[1, 2, 3], 4, 5, 6]    [[1, 2, 3], 'tom', 5, 6]

代码语言:javascript
复制
a=[[1,2,3],4,5,6]
b=a.copy()
a[1]='tom'
print(a)
print(b)
结果:

[[1, 2, 3], 'tom', 5, 6]    [[1, 2, 3], 4, 5, 6]

总结:从上面代码可以看出来浅拷贝是重新开辟一块内存,拷贝第一层数据,不拷贝内部子元素

在本代码中,b列表重新开辟了一块内存放元素【b【0】,4,5,6】,也就是第一层内容,

然后b【0】的位置指向了a【0】指向的内存位置

三、深拷贝   使用copy函数

重新开辟一块内存,存放拷贝列表的所有内容。a集合与b集合互不影响

代码语言:javascript
复制
import copy
a=[[1,2,3],4,5,6]
b=copy.deepcopy(a)
a[1]='tom'
print(a)
print(b)
结果:

[[1, 2, 3], 'tom', 5, 6]    [[1, 2, 3], 4, 5, 6]

代码语言:javascript
复制
import copy
a=[[1,2,3],4,5,6]
b=copy.deepcopy(a)
b[1]='tom'
print(a)
print(b)
结果:

[[1, 2, 3], 4, 5, 6]   [[1, 2, 3], 'tom', 5, 6]

代码语言:javascript
复制
import copy
a=[[1,2,3],4,5,6]
b=copy.deepcopy(a)
b[0][1]='tom'
print(a)
print(b)
结果;

[[1, 2, 3], 4, 5, 6]   [[1, 'tom', 3], 4, 5, 6]

代码语言:javascript
复制
import copy
a=[[1,2,3],4,5,6]
b=copy.deepcopy(a)
a[0][1]='tom'
print(a)
print(b)
结果:

[[1, 'tom', 3], 4, 5, 6]    [[1, 2, 3], 4, 5, 6]

copy函数也可以浅拷贝:

代码语言:javascript
复制
import copy
a=[[1,2,3],4,5,6]
b=copy.copy(a)
a[0][1]='tom'
print(a)
print(b)
结果:

[[1, 'tom', 3], 4, 5, 6]    [[1, 'tom', 3], 4, 5, 6]

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-05-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档