python之路09---之列表与元组的所有操作
一、列表说明
列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:
li = [‘ouyang’,123,Ture,(1,2,3,’71net.com’),[1,2,3,’小明’,],{‘name’:’ouyang’}]
列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值。
二、列表的操作
1、定义列表
list = ["71net.com","71box.net","71so.cn"]
下面对列表的操作都基于这个列表。
2、列表的查询操作
1、按下标查询
print(list[1]) #就将列表里下标为1的元素打印出来了,即71box.net
2、切片查询
print(list[0:2]) #顾头不透尾(和字符串一样),即查询出了下标为0和1的元素
3、循环查询(查询全部)
for i in list: print(i)
4、列表的步长查询
names = ["ZhangYang","GuYun","XiangPeng",["zain","xiajing"],"XuLiangChen","ChenRongHua"] print(names[0:-1:2]) #打印names列表,从第一个打印到最后一个,步长是2 print(names[::2]) #0表示从头开始可以省略,-1表示结尾也可以省略,2表示步长为2,简化后可以写为[::2]
3、列表的增加操作
1、追加,将元素追加到列表末尾
list.append("71.ink") #将71.ink追加到list列表的最后,
print(list) #结果为:['71net.com', '71box.net', '71so.cn', '71.ink']
2、插入,将元素写入到指定下标的前面
list.insert(2,"71.ink") #指定在下标是二的元素前面插入,插入:写入到指定下标的前面 print(list) #结果为:['71net.com', '71box.net', '71.ink', '71so.cn']
3、迭代插入
说明:将插入的元素分解成最小元素写入到列表的最后面,数字不可迭代(会报错),可迭代的对象为:字符串和列表
1、插入字符串 list.extend("net") print(list) #结果为:['71net.com', '71box.net', '71so.cn', 'n', 'e', 't'] 2、插入列表 list.extend(['71','net']) print(list) #结果为:['71net.com', '71box.net', '71so.cn', '71', 'net']
4、列表的删除操作
1、按索引删除
说明:(如果指定索引就删除指定索引的内容,如果不指定索引则默认删除最后一个),注意:使用pop删除会返回删除的内容
a = list.pop(1) #指定删除列表里下标为1的元素 print(a,"-分割符-",list) #结果为:71box.net -分割符- ['71net.com', '71so.cn']
2、按元素删除
说明:即指定列表里的元素删除列表里的内容
list.remove("71so.cn") print(list) #结果为:['71net.com', '71box.net']
3、清空列表
list.clear() #将列表清空 print(list) #结果为:[]
4、切片删除列表里的元素
del list[1:] #切片删除列表里的元素,[1:]:表示匹配下标1到列表结尾 print(list) #结果为:['71net.com']
del list[0:2] #[0:2]:顾头不顾尾,表示删除前两个元素
print(list) #结果为:['71so.cn']
5、将列表删除
del list print(list) #此时打印列表会报错
5、列表的改操作
1、根据下标修改
list[0] ="www.71net.com" #修改列表的第一个值 list[1] = [1,2,3] #也可以改为列表
2、切片修改
说明:指定切片长度 想写多少个都可以(不是必须删除几个,就添加几个,可以删除一个,添加10个)
list[0:2] = "欧阳" #切片修改,将列表的第一个值和第二个值替换为欧 阳,输出结果为:['欧', '阳', '71so.cn', '71.ink'] list[0:1] = ["zhangsan","lisi",1,2,3] #添加列表,添加的内容为列表的最小元素,输出结果为:['zhangsan', 'lisi', 1, 2, 3, '71box.net', '71so.cn', '71.ink']
6、列表排序
说明:(按首字母的顺序):将列表的内容按首字母的顺序排序,优先级顺序:1.特殊符号,2.数字,3.大写,4.小写(按照ascll里的排序顺序来的),数字按从小到大排列
1、正序排序 li = [1,5,7,4,2,6,3] li.sort() #1、正序排序,打印结果为:[1, 2, 3, 4, 5, 6, 7] 2、倒序排序 li.sort(reverse=True) #2、反序排序,打印结果为:[7, 6, 5, 4, 3, 2, 1] 3、列表反转 li.reverse() #列表的反序显示,打印结果为:[3, 6, 2, 4, 7, 5, 1] #print(li)
7、合并列表
names1 = ["zhangsan","lisi"] #定义列表1 names2 = [1,2,3] #定义列表2 names1.extend(names2) #将names2列表的内容合并到names1列表的结尾 print(names1,names2) #打印两个列表,发现列表1中增加了列表2的内容同时列表2还在。 del names2 #删除列表2,两个列表都合并了,列表2就没有存在的意义了 print(names1,names2) #此时在打印列表1和列表2就会报错,说没有列表2了
8、列表的浅copy
names = ["ZhangYang","GuYun","XiangPeng",["zain","xiajing"],"XuLiangChen","ChenRongHua"] #定义names列表 names2 = names.copy() #拷贝names列表并赋值于names2列表(浅copy,只copy一层,如果有多层列表就不copy了第二层列表了) names[1] = "顾云" #修改names列表下标为1的值 names[3][0] = "Zain" #修改names列表的下标为3的字段的第一个字段 print(names) #打印names列表,发现下标是1的值已经变了 print(names2) #打印names2列表,发现内容还是之前的
9、列表copy之完全copy
import copy #需要引用copy模块 names = ["ZhangYang","GuYun","XiangPeng",["zain","xiajing"],"XuLiangChen","ChenRongHua"] #定义列表names names2 = copy.deepcopy(names) #copy.deepcopy()方法为深拷贝,完全复制的意思。将names复制一份赋值给names2 names[3][0] = "ZAIN" #将列表names下标为1的字段下的第一个字段改为ZAIN, print(names) print(names2) #打印names列表和names2列表,发现只是names列表的值修改了,names2的值还是之前的
10、列表的公共用法
print(len(list)) #统计列表长度 print(list.count("71net.com")) #统计列表里元素出现的次数 print(list.index("71net.com")) #通过元素找下标,如果是没有的元素会报错
三、元组
1、说明
元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。例:(1,2,3)("a","b","c")
2、元组的操作
1、定义元组
tu = (1,2,3,'ouyang',[2,3,4,'qiyi'],'71net') #元组里面嵌套的列表里的内容可以修改,其他的不可以修改
2、往qiyi后面追加内容www
tu[4].append("www")
3、元组的切片查询
print(tu[0:3])
4、循环打印元组
for i in tu:
print(i)

浙公网安备 33010602011771号