python学习第二周之列表的使用之深浅复制

1.本次深浅复制还是以names列表为例,names=["wu","li","xia","hu","chen"]  

(1)以下先来说一下浅复制语句:name2=names.copy(),这时发现names、name2输出的值是一样的。

如果再将names中某个值改变,names[2]=“夏”,输出结果中看到names中的xia变为夏,name2的输出值未发生改变。

(2)如果将该names列表修改为names=["wu","li","xia",["al","jack"],"hu","chen"],将names[3][0]="AL",这是发现输出结果中"al"输出都变成了"AL",这是因为["al","jack"],在列表中相当于一个内存地址,复制的时候相当于复制的是al jack存的地址,同样如果将name2[3][0]="Wu",同样names[3][0]也为"Wu",这时可以使用id()查看一下id(names[3])与name2[3])的地址,发现是一样的。

names=["wu","li","xia",["al","jack"],"hu","chen"]   #列表
name2=names.copy()
print(names)
print(name2)

#names[2]="夏"
names[3][0]="AL" #["al","jack"]在列表中相当于一个内存地址,复制的时候相当于复制的是al jack存的地址,同样如果将name2[3][0]="Wu",同样names[3][0]也为"Wu"
#name2[3][0]="Wu"
#print(id(names))
#print(id(name2))
print(id(names[3]))
print(id(name2[3]))
print(names)
print(name2)

这时可以看见输出结果为:

['wu', 'li', 'xia', ['al', 'jack'], 'hu', 'chen']
['wu', 'li', 'xia', ['al', 'jack'], 'hu', 'chen']
18821288
18821288
['wu', 'li', '夏', ['Wu', 'jack'], 'hu', 'chen']
['wu', 'li', 'xia', ['Wu', 'jack'], 'hu', 'chen']

(3)如果引入copy库,import copy,那么name2=names.copy()也可以写成name2=copy,copy(names),着两者输出结果是一样的。

(4)引入copy库,有深copy,程序表现为name2=copy.deepcopy(names),这时将names[3][0],name2[3][0]均赋予一个新值,发现输出结果互不影响,此时两者id也不一样。

import copy
names=["wu","li","xia",["al","jack"],"hu","chen"]   #列表

name2=copy.deepcopy(names)

print(names)
print(name2)

names[3][0]="AL"   
name2[3][0]="Wu"

print(id(names[3]))
print(id(name2[3]))
print(names)
print(name2)

 

此时输出结果为

46018848
46497064
['wu', 'li', '夏', ['AL', 'jack'], 'hu', 'chen']
['wu', 'li', 'xia', ['Wu', 'jack'], 'hu', 'chen']

2.for循环在列表中的使用,直接插入循环即可

names=["wu","li","xia",["al","jack"],"hu","chen"]   #列表
for i in names:
    print(i)

 

输出结果为

wu
li
xia
['al', 'jack']
hu
chen

3.如果想要隔位置输出,直接 print(names[0:-1:2]),表示从第一个到最后一个,也可以表示为print(names[::2])

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值