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.列表循环
names = ["Jane","Nike",["wiiknow","ZYQ"],"Mike","kenvie","Apple"]
for i in names:
print(i);
Nike
['wiiknow', 'ZYQ']
Mike
kenvie
Apple