|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
import copy
alist=["魂淡",("a","b"),[98,99]]
blist=alist #直接复制
clist=copy.copy(alist)#浅拷贝
dlist=copy.deepcopy(alist)#深拷贝 运行结果显示区域 问题区
#查看列表中元素是否相同
print("查看列表中元素是否相同") 查看列表中元素是否相同
print("alist:%s" % alist) alist:['魂淡', ('a', 'b'), [98, 99]]
print("blist:%s" % blist) blist:['魂淡', ('a', 'b'), [98, 99]]
print("clist:%s" % clist) clist:['魂淡', ('a', 'b'), [98, 99]]
print("dlist:%s" % dlist) dlist:['魂淡', ('a', 'b'), [98, 99]]
#比较列表
print("比较列表") 比较列表
print("alist=blist:%s" % alist==blist) FALSE 1、alist和blist元素、地址都一样,为alist==blist显示False?
print("alist=clist:%s" % alist==clist) FALSE
print("alist=dlist:%s" % alist==dlist) FALSE
#判断是否为列表1
print("判断是否为列表1") 判断是否为列表1
print("alist is blist:%s" % alist is blist) FALSE 2、alist和blist元素、地址都一样,为alist is blist显示False?
print("alist is clist:%s" % alist is clist) FALSE
print("alist is dlist:%s" % alist is dlist) FALSE
#查看列表地址
print("查看列表地址") 查看列表地址
print("alist地址:%s" % id(alist)) alist地址:47281352
print("blist地址:%s" % id(blist)) blist地址:47281352
print("clist地址:%s" % id(clist)) clist地址:47281608
print("dlist地址:%s" % id(dlist)) dlist地址:47281992
#查看列表中一级元素地址
print("查看列表中一级元素地址") 查看列表中一级元素地址
print("alist[0]地址:%s" % id(alist[0])) alist[0]地址:50055280
print("blist[0]地址:%s" % id(blist[0])) blist[0]地址:50055280
print("clist[0]地址:%s" % id(clist[0])) clist[0]地址:50055280
print("dlist[0]地址:%s" % id(dlist[0])) dlist[0]地址:50055280
print("alist[1]地址:%s" % id(alist[1])) alist[1]地址:50092424
print("blist[1]地址:%s" % id(blist[1])) blist[1]地址:50092424
print("clist[1]地址:%s" % id(clist[1])) clist[1]地址:50092424
print("dlist[1]地址:%s" % id(dlist[1])) dlist[1]地址:50092424
print("alist[2]地址:%s" % id(alist[2])) alist[2]地址:47281096
print("blist[2]地址:%s" % id(blist[2])) blist[2]地址:47281096
print("clist[2]地址:%s" % id(clist[2])) clist[2]地址:47281096
print("dlist[2]地址:%s" % id(dlist[2])) dlist[2]地址:47282120
#查看列表中子元素地址
print("查看列表中一级元素地址") 查看列表中一级元素地址
print("alist[1][0]地址:%s" % id(alist[1][0])) alist[1][0]地址:5347344
print("blist[1][0]地址:%s" % id(blist[1][0])) blist[1][0]地址:5347344
print("clist[1][0]地址:%s" % id(clist[1][0])) clist[1][0]地址:5347344
print("dlist[1][0]地址:%s" % id(dlist[1][0])) dlist[1][0]地址:5347344
print("alist[1][1]地址:%s" % id(alist[1][1])) alist[1][1]地址:5345664
print("blist[1][1]地址:%s" % id(blist[1][1])) blist[1][1]地址:5345664
print("clist[1][1]地址:%s" % id(clist[1][1])) clist[1][1]地址:5345664
print("dlist[1][1]地址:%s" % id(dlist[1][1])) dlist[1][1]地址:5345664
print("alist[2][0]地址:%s" % id(alist[2][0])) alist[2][0]地址:8791479578288
print("blist[2][0]地址:%s" % id(blist[2][0])) blist[2][0]地址:8791479578288
print("clist[2][0]地址:%s" % id(clist[2][0])) clist[2][0]地址:8791479578288
print("dlist[2][0]地址:%s" % id(dlist[2][0])) dlist[2][0]地址:8791479578288
print("alist[2][1]地址:%s" % id(alist[2][1])) alist[2][1]地址:8791479578320
print("blist[2][1]地址:%s" % id(blist[2][1])) blist[2][1]地址:8791479578320
print("clist[2][1]地址:%s" % id(clist[2][1])) clist[2][1]地址:8791479578320
print("dlist[2][1]地址:%s" % id(dlist[2][1])) dlist[2][1]地址:8791479578320
#修改列表中一级元素
print("修改列表中一级元素")
alist.append("黑夜") 修改列表中一级元素
print("alist:%s" % alist) alist:['魂淡', ('a', 'b'), [98, 99], '黑夜']
print("blist:%s" % blist) blist:['魂淡', ('a', 'b'), [98, 99], '黑夜']
print("clist:%s" % clist) clist:['魂淡', ('a', 'b'), [98, 99]] 3、clist和alist一级元素地址相同,为何插入“黑夜”在clist中无显示?
print("dlist:%s" % dlist) dlist:['魂淡', ('a', 'b'), [98, 99]]
#修改列表中二级元素
print("修改列表中二级元素") 修改列表中二级元素
alist[1]=alist[1]+("c",)
print("alist:%s" % alist) alist:['魂淡', ('a', 'b', 'c'), [98, 99], '黑夜']
print("blist:%s" % blist) blist:['魂淡', ('a', 'b', 'c'), [98, 99], '黑夜']
print("clist:%s" % clist) clist:['魂淡', ('a', 'b'), [98, 99]]
print("dlist:%s" % dlist) dlist:['魂淡', ('a', 'b'), [98, 99]]
alist[2].append(100)
print("alist:%s" % alist) alist:['魂淡', ('a', 'b', 'c'), [98, 99, 100], '黑夜']
print("blist:%s" % blist) blist:['魂淡', ('a', 'b', 'c'), [98, 99, 100], '黑夜']
print("clist:%s" % clist) clist:['魂淡', ('a', 'b'), [98, 99, 100]]
print("dlist:%s" % dlist) dlist:['魂淡', ('a', 'b'), [98, 99]] 4、四个列表中二节元素地址均相同,为何插入的c只在a、blist中显示,
插入的100至在a、b、clist中显示?
本帖最后由 flamezyy 于 2020-3-11 12:29 编辑 import copy
alist=["魂淡",("a","b"),[98,99]]
blist=alist #直接复制
clist=copy.copy(alist)#浅拷贝
dlist=copy.deepcopy(alist)#深拷贝
#查看列表中元素是否相同
print("查看列表中元素是否相同")
print("alist:%s" % alist)
print("blist:%s" % blist)
print("clist:%s" % clist)
print("dlist:%s" % dlist)
#比较列表
print("比较列表") #'%'的优先度高于'=='
print("alist=blist:%s" % (alist==blist)) #如果是('%s'alist==blist)相当于 ('%s'%alist)==blist 肯定是false
print("alist=clist:%s" % (alist==clist))
print("alist=dlist:%s" % (alist==dlist))
#判断是否为列表1
print("判断是否为列表1")
print("alist is blist:%s" % (alist is blist))
print("alist is clist:%s" % (alist is clist))
print("alist is dlist:%s" % (alist is dlist))
查看列表中元素是否相同
alist:['魂淡', ('a', 'b'), [98, 99]]
blist:['魂淡', ('a', 'b'), [98, 99]]
clist:['魂淡', ('a', 'b'), [98, 99]]
dlist:['魂淡', ('a', 'b'), [98, 99]]
比较列表
alist=blist:True
alist=clist:True
alist=dlist:True
判断是否为列表1
alist is blist:True
alist is clist:False
alist is dlist:False
print(id(alist))
print(id(blist))
print(id(clist))
print(id(dlist))
16979088
16979088
16979208
16979288
可以看到,c和d的地址与a和b的不同,所以在a中增加元素,不会影响到c和d
alist.append("黑夜") 修改列表中一级元素
print("alist:%s" % alist) alist:['魂淡', ('a', 'b'), [98, 99], '黑夜']
print("blist:%s" % blist) blist:['魂淡', ('a', 'b'), [98, 99], '黑夜']
print("clist:%s" % clist) clist:['魂淡', ('a', 'b'), [98, 99]]
print("dlist:%s" % dlist) dlist:['魂淡', ('a', 'b'), [98, 99]]
地址:alist[2] ==blist[2]==clist[2]!=dlist[2]
说明在alist[2]中增加元素,只会影响到b[2]和c[2],不会影响到d
#修改列表中二级元素
print("修改列表中二级元素") 修改列表中二级元素
alist[2].append(100)
print("alist:%s" % alist) alist:['魂淡', ('a', 'b', 'c'), [98, 99, 100], '黑夜']
print("blist:%s" % blist) blist:['魂淡', ('a', 'b', 'c'), [98, 99, 100], '黑夜']
print("clist:%s" % clist) clist:['魂淡', ('a', 'b'), [98, 99, 100]]
print("dlist:%s" % dlist) dlist:['魂淡', ('a', 'b'), [98, 99]]
print("修改列表中二级元素") 修改列表中二级元素
alist[1]=alist[1]+("c",)
print("alist:%s" % alist) alist:['魂淡', ('a', 'b', 'c'), [98, 99], '黑夜']
print("blist:%s" % blist) blist:['魂淡', ('a', 'b', 'c'), [98, 99], '黑夜']
print("clist:%s" % clist) clist:['魂淡', ('a', 'b'), [98, 99]]
print("dlist:%s" % dlist) dlist:['魂淡', ('a', 'b'), [98, 99]]
因为 alist[1]是一个元祖,而元组是不能修改的,所以四个列表的[1]地址相同,当去试图通过alist[1]=alist[1]+("c",) 改变元组时,相当于指向一个新的元组 ,而原本的元组不变,因此alist[1]的地址会变化,当然blist[1]也会变化,因为a和b的地址相同 alist[1] = alist[1] + ('c',)
print(id(alist[1]))
print(id(blist[1]))
print(id(clist[1]))
print(id(dlist[1]))
43188136
43188136
42372592
42372592
alist[2][1] ==blist[2][1]==clist[2][1]==dlist[2][1]
因为他们都指向元素99,当然地址是相同的
|
评分
-
查看全部评分
|