Python-Day02-列表2

Python的列表使用2:

1.列表中放入列表:

names = ["Jane","Nike",["wiiknow","ZYQ"],"Mike","kenvie","Apple"]
    #列表中插入列表

print(names)          #结果:['Jane', 'Nike', ['wiiknow', 'ZYQ'], 'Mike', 'kenvie', 'Apple']
print(names[2][0])   #通过names[2][0]获取:wiiknow的位置,类似于二维列表  结果:"wiiknow"

#切入操作
print(names[0:-1:2])  #含义:从0到-1,每两个输出一个,结果:['Jane', ['wiiknow', 'ZYQ'], 'kenvie']
print(names[::2])     #因为0可以省略,所以跟上面结果一样 结果:['Jane', ['wiiknow', 'ZYQ'], 'kenvie']


2.浅复制和深复制

当列表中含义子列表时,会出现浅copy和深copy的说法:

浅copy:

复制一个列表给新的列表,当任何一个列表里的子列表有任何改动时,所有列表里的子列表都会更新;

原因:表复制时,当出现子列表,并不是复制其中的值给予新列表,而是把该子列表的内存地址赋予新列表,

所以任何一个列表改动子列表时,实际是直接在该内存直接改值。

浅copy有三种方法:

1.使用copy库中的copy函数

2.直接等于,并指定序列号

3.使用list方法

import copy  #需导入copy库

person = ["Name",["saving",100]]

#浅复制:
person2 = copy.copy(person)
person3 = person[:]     #[:] 表示提取person集合中的所有元素
person4 = list(person)

print("person2:",person2)
print("person3:",person3)
print("person4:",person4)
结果:

person2: ['Name', ['saving', 100]]
person3: ['Name', ['saving', 100]]
person4: ['Name', ['saving', 100]]


联表改动:

person2[0]=["MyName"]
person3[0]=["HerName"]

person2[1][1] = 50;
print("name2:",person2)
print("name3:",person3)
print("name:",person)

结果:

person2: [['MyName'], ['saving', 50]]
person3: [['HerName'], ['saving', 50]]
person: ['Name', ['saving', 50]]


深度copy:

如果想要复制后值不会随着联动改变,就需要使用深度复制的函数,copy库中的deepcopy()方法

实例:

names = ["Jane","Nike",["wiiknow","ZYQ"],"Mike","kenvie","Apple"]
names3 = copy.deepcopy(names); #copy中的深度复制方法
names[2][0] = "Kind";
print("names:",names);
print("names3:",names3);
结果:

names: ['LXB', 'Nike', ['Kind', 'queen'], 'Mike', 'kenvie', 'Apple']
names3: ['LXB', 'Nike', ['wiiknow', 'queen'], 'Mike', 'kenvie', 'Apple']


3.列表循环

列表循环使用的类似for的遍历循环,这比别的语言使用起来更简便:
names = ["Jane","Nike",["wiiknow","ZYQ"],"Mike","kenvie","Apple"]
for i in names:
    print(i);

结果:
Jane
Nike
['wiiknow', 'ZYQ']
Mike
kenvie
Apple





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值