码迷,mamicode.com
首页 > 编程语言 > 详细

python基础二 - 深浅copy

时间:2018-04-14 12:36:07      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:imp   div   基础   python基础   列表   int   内存   class   一个   

一 深浅copy

#赋值运算,它们公用一个列表

a = [1,2,3]
b = a 
a.append(666)
print(a,b)     #[1, 2, 3, 666] [1, 2, 3, 666]

 

# 对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始
# 指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性
# ## 浅copy: 创建另一个内存地址
l1 = [1,2,3]
l2 = l1.copy()
l1.append(666)
print(l1,l2)   #[1, 2, 3, 666] [1, 2, 3]
print(id(l1),id(l2))

l1 = [1,2,3,[22,33]]
l2 = l1.copy()
l1[-1].append(666)
print(l1,l2)
# [1, 2, 3, [22, 33, 666]] [1, 2, 3, [22, 33, 666]]

print(id(l1),id(l2))   #第一层内存地址不一致
#4364259464 4364322504

print(id(l1[-1]),id(l2[-1]))  #第二层内存地址一致
#4364323976 4364323976

 


对于深copy来说,两个是完全独立的了
import copy
l1 =  [1,2,3,[22,33]]
l2 = copy.deepcopy(l1)
print(l1,l2)
#[1, 2, 3, [22, 33, 666]] [1, 2, 3, [22, 33]]
print(id(l1),id(l2))  #第一层内存地址不一致
#4364233288 4364148872
print(id(l1[-1]),id(l2[-1]))  # 第二层内存地址也不一致
#4364213448 4364233224

 

python基础二 - 深浅copy

标签:imp   div   基础   python基础   列表   int   内存   class   一个   

原文地址:https://www.cnblogs.com/wangph/p/8830887.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!