python中对列表浅复制深复制另类的理解方式
生活随笔
收集整理的這篇文章主要介紹了
python中对列表浅复制深复制另类的理解方式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
'''
創(chuàng)建者:徐洋
創(chuàng)建時間:2017年6月13日22:25:23
代碼功能:詳細(xì)分析列表的淺copy和深度copy
'''
#導(dǎo)入copy模塊
import copy
list1 = [1,2,3,["a","b","c"]]
#對表1進(jìn)行淺復(fù)制
list2 = copy.deepcopy(list1)#copy.copy
#查詢表1中各個元素的內(nèi)存地址
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中各個元素的內(nèi)存地址
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的內(nèi)存地址和列表2的內(nèi)存地址
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中各個元素的內(nèi)存地址
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中各個元素的內(nèi)存地址
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的內(nèi)存地址和列表2的內(nèi)存地址
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中各個元素的內(nèi)存地址
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中各個元素的內(nèi)存地址
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的內(nèi)存地址和列表2的內(nèi)存地址
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)
創(chuàng)建者:徐洋
創(chuàng)建時間:2017年6月13日22:25:23
代碼功能:詳細(xì)分析列表的淺copy和深度copy
'''
#導(dǎo)入copy模塊
import copy
list1 = [1,2,3,["a","b","c"]]
#對表1進(jìn)行淺復(fù)制
list2 = copy.deepcopy(list1)#copy.copy
#查詢表1中各個元素的內(nèi)存地址
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中各個元素的內(nèi)存地址
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的內(nèi)存地址和列表2的內(nèi)存地址
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中各個元素的內(nèi)存地址
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中各個元素的內(nèi)存地址
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的內(nèi)存地址和列表2的內(nèi)存地址
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中各個元素的內(nèi)存地址
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中各個元素的內(nèi)存地址
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的內(nèi)存地址和列表2的內(nèi)存地址
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)
?
轉(zhuǎn)載于:https://www.cnblogs.com/88893636-xuyang/p/7004412.html
總結(jié)
以上是生活随笔為你收集整理的python中对列表浅复制深复制另类的理解方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue import组件的使用
- 下一篇: lua自定义迭代器