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

python中对列表浅复制深复制另类的理解方式

时间:2017-06-14 02:17:08      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:ddr   res   理解   三次   创建   另类   2017年   导入   [1]   

‘‘‘
创建者:徐洋
创建时间:2017年6月13日22:25:23
代码功能:详细分析列表的浅copy和深度copy
‘‘‘
#导入copy模块
import copy
list1 = [1,2,3,["a","b","c"]]
#对表1进行浅复制
list2 = copy.deepcopy(list1)#copy.copy
#查询表1中各个元素的内存地址
address0 = id(list1[0])
address1 = id(list1[1])
address2 = id(list1[2])
address3 = id(list1[3])
address30 = id(list1[3][0])
address31 = id(list1[3][1])
address32 = id(list1[3][2])
#查询表2中各个元素的内存地址
address_0 = id(list2[0])
address_1 = id(list2[1])
address_2 = id(list2[2])
address_3 = id(list2[3])
address_30 = id(list2[3][0])
address_31 = id(list2[3][1])
address_32 = id(list2[3][2])
# 打印出列表1的内存地址和列表2的内存地址
print("---------第一次比较---------")
print("列表1:",address0,address1,address2,address3,address30,address31,address32)
print("列表2:",address_0,address_1,address_2,address_3,address_30,address_31,address_32)
# 修改列表1中某个值
list1[1]=-1
#查询表1中各个元素的内存地址
address0 = id(list1[0])
address1 = id(list1[1])
address2 = id(list1[2])
address3 = id(list1[3])
address30 = id(list1[3][0])
address31 = id(list1[3][1])
address32 = id(list1[3][2])
#查询表2中各个元素的内存地址
address_0 = id(list2[0])
address_1 = id(list2[1])
address_2 = id(list2[2])
address_3 = id(list2[3])
address_30 = id(list2[3][0])
address_31 = id(list2[3][1])
address_32 = id(list2[3][2])
# 打印此时列表1的内存地址和列表2的内存地址
print("---------第二次比较---------")
print("列表1:",address0,address1,address2,address3,address30,address31,address32)
print("列表2:",address_0,address_1,address_2,address_3,address_30,address_31,address_32)
print(list1,list2)
# 修改列表1中第三个元素中的值
list1[3][1] = 6
#查询表1中各个元素的内存地址
address0 = id(list1[0])
address1 = id(list1[1])
address2 = id(list1[2])
address3 = id(list1[3])
address30 = id(list1[3][0])
address31 = id(list1[3][1])
address32 = id(list1[3][2])
#查询表2中各个元素的内存地址
address_0 = id(list2[0])
address_1 = id(list2[1])
address_2 = id(list2[2])
address_3 = id(list2[3])
address_30 = id(list2[3][0])
address_31 = id(list2[3][1])
address_32 = id(list2[3][2])
# 打印此时列表1的内存地址和列表2的内存地址
print("---------第三次比较---------")
print("列表1:",address0,address1,address2,address3,address30,address31,address32)
print("列表2:",address_0,address_1,address_2,address_3,address_30,address_31,address_32)
# 原因分析:看图
print(list1,list2)

python中对列表浅复制深复制另类的理解方式

标签:ddr   res   理解   三次   创建   另类   2017年   导入   [1]   

原文地址:http://www.cnblogs.com/88893636-xuyang/p/7004412.html

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