当前位置: 首页 > 后端技术 > Python

Python容器数据类型(列表、元组)

时间:2023-03-25 23:11:58 Python

容器类型(列表、元组)的高级使用列表和元组的拼接和重复列表和元组的索引和数据元素获取列表和元组元素的修改和删除内置列表和元组的作用本文目录@[toc]列表和元组的拼接和复用+多个列表或元组可以合并为一个lst=[1,2,3]lst1=['one','two','三']res=lst+lst1print(res)#[1,2,3,'一','二','三']tup=(11,22,33)tup1=('aa','bb','cc')res=tup+tup1print(res)#(11,22,33,'aa','bb','cc')using*元素可以重复多次lst=[1,2,3]*3print(lst)#[1,2,3,1,2,3,1,2,3]tup=(11,22,33)*2print(tup)#(11,22,33,11,22、33)list和tuple的索引和数据元素的获取我们之前说过string、list和tuple这三个容器的共同特点是的,都是有序的,可用的,都ha有正负下标索引。lst=['一','二','三']res=lst[0]print(res)#onetup=('aa','bb','cc')res=tup[-1]print(res)#cc列表的使用方式与元组切片列表、元组和字符串切片完全相同,因此我们在此不再赘述。详见上一篇《高级容器类型使用(string):asliceofstring》。Syntax:string[startindex:endindex:intervalvalue]lst=['宋江','卢俊义','吴用','关胜','林冲']#1,[startindex:]拦截fromstarttoFinallyres=lst[2:]print(res)#['吴用','关胜','林冲']#2,[:Endindex]从头截取到最后一个元素之前endres=lst[:4]print(res)#['宋江','卢俊义','吴用','关胜']#3.[startindex:endindex]从头到尾截取lastelementres=lst[1:3]print(res)#['卢俊义','吴勇']#4.[起始索引:结束索引:区间值]根据区间值,从头截取到末尾前的最后一个元素res=lst[1:4:2]print(res)#['卢俊义','关胜']列表和元组元素的修改和删除还记得我们总结的六种数据类型吗?列表是可修改的,但元组是不可变的。由于它们是不可变的,因此无法删除其中的元素。修改数据元素如果我们要修改或删除列表或其他可修改容器中的数据元素,我必须首先指定数据元素的位置,就像getting一样。然后像定义一个变量一样重新赋值一个新值,原来的旧数据就可以被覆盖。#给一个元素位置赋新值lst[3]='关羽'print(lst)#['宋江','卢俊义','吴用','关羽','林冲']can同样使用切片修改多个元素,数量没有限制#选择一个范围,批量赋新值lst[1:3]='武松'print(lst)#['宋江','Wu','宋','关胜','林冲']lst[1:3]='武松','鲁智深'print(lst)#['宋江','武松','LuZhishen','GuanSheng','LinChong']#注意如果我们选择的范围过大,但是同样数量的值不能赋值,会导致不能赋值的值被删掉稍后被赋予新的值。lst[1:3]='世谦',print(lst)#['宋江','世谦','关胜','林冲']#如果给的值太多,会导致数据跳队lst[1:3]='晁盖','阮小七','李逵','石进','华容'print(lst)#['宋江','晁盖','阮小七','李逵','石进','花荣','林冲']元组不能修改数据,那么元组中列表的数据元素可以修改吗?答案是肯定的,元组不支持修改元组的一级元素。tup=(1,2,3,[4,5,6])#tup[0]='123'#错误,元组的数据元素不可修改tup[-1][1]='刘备'print(tup)#(1,2,3,[4,'刘备',6])删除数据元素说到删除数据元素,我们需要学习一个关键字del的使用,可以删除什么我们不希望数据释放内存。语法:del+数据删除列表中的元素#单次删除lst=['宋江','卢俊义','吴勇','关胜','林冲']dellst[1]print(lst)#['宋江','吴用','关胜','林冲']#批量删除lst=['宋江','卢俊义','吴用','关胜','林冲chong']dellst[1:4]print(lst)#['宋江','林冲']del不仅可以删除容器中的数据,还可以直接删除变量lst=['宋江','卢俊义','吴用','关胜','林冲']print(lst)#['宋江','卢俊义','吴用','关胜','林冲']dellstprint(lst)#错误,名为lst的数据不存在listsame元组内置函数list增删改查相关函数。当我们对上面列表中的困难数据元素进行操作时,我们会觉得有很大的局限性和很大的不适感。更关键的一点是数据存在误操作的可能性,所以我们推荐使用内置函数对数据元素进行相关操作。函数append在列表末尾添加一个新的数据元素,返回Noneinsert在指定索引之前插入数据元素,返回Noneextend迭代追加所有元素,在列表末尾添加,返回Nonepop删除的数据元素指定索引,默认索引如果为-1,则返回删除的元素。remove删除指定的值。如果有多个相同的值,默认删除第一个。returnNoneclear清除list中所有数据元素,返回Nonecopy浅拷贝,返回不同内存地址相同值的List;adddataappend在末尾添加数据,singleaddlst=[1,2,3]lst.append('msr')print(lst)#[1,2,3,'msr']在指定位置之前插入添加数据lst.insert(1,'msr20666')print(lst)#[1,'msr20666',2,3,'msr']lst.insert(-1,'hello')print(lst)#[1,'msr20666',2,3,'hello','msr']添加数据只能使用+和extend批量添加数据,但是+只能是相同的数据类型,而extend可以支持可迭代的数据类型.#使用extend迭代添加数据元素lst=[1,2,3]newcont=[11,22,33]lst.extend(newcont)print(lst)#[1,2,3,11,22,33]#支持其他可迭代数据类型newcont1='abc'lst.extend(newcont1)print(lst)#[1,2,3,11,22,33,'a','b','c']删除数据使用pop删除指定索引元素,默认值为-1lst=[1,2,3,4,5]res=lst.pop()print(res)#5print(lst)#[1,2,3,4]res=lst.pop(3)print(res)#4print(lst)#[1,2,3]使用remove删除指定值,如果有多个相同的值,删除第一个,如果有没有这个值,会报错。lst=['msr20666','msr',1,2,3,'msr']lst。remove('msr')print(lst)#['msr20666',1,2,3,'msr']lst.remove(4)#错误,没有这个值使用clear清除列表lst=[1,2,3,4]lst.clear()print(lst)#[]列表元组常用的内置函数函数函数索引获取元素的索引计数计算元素排序出现的次数sortsonthe原始基础,返回Nonereverse进行倒序,返回Noneindex获取某个元素的索引值;如果有多个相同的值,则获取第一个数据的索引值;如果没有这样的数据,就会报错。语法:container.index(value,[start],[end])#查找某条数据的索引lst=[1,2,3,1,2,3]res=lst.index(1)print(res)#0#在一定范围内查找tup=(1,2,3,1,2,3)res=lst.index(1,3)#从索引3开始查找数据1print(res)#3count计算出一个数of出现的元素,列表中的计数与字符串中的计数不同,字符串中的计数可以划定范围,列表中的计数不支持此功能。lst=[1,2,3,1,2,3]res=lst.count(1)print(res)#2sort将容器中的数据元素按照大小排序,默认是从小到大。#默认是lst从小到大排序=[1,334,44,55,56,65,67,78,]lst.sort()print(lst)#[1,44,55,56,65,67,78,334]排序也可以按降序排序。默认情况下,sort参数reverse的值为False,只需将值改为True即可。lst=[1,334,44,55,56,65,67,78,]lst。sort(reverse=True)print(lst)#[334,78,67,65,56,55,44,1]字符串被排序。如果是数字类型的字符串,则不按照数字的大小排序,而是按照第一个元素排序。如果第一位相同,则按照第二位排序,以此类推;如果是英文字母,则按照ASCII编码进行排序,排序方法和规则与数字字符串相同;如果是中文或其他字符,则排序不规则;如果列表中有字符串类型和数值类型,则不能使用排序,否则会报错。#排序数字lst=['1','334','44','55','56','65','67','78',]lst.sort()print(lst)#['1','334','44','55','56','65','67','78']#对字母进行排序,按照ASCII码表,正序为:A->Z->a->zlst=['苹果','微软','IBM','华为','思科']lst.sort()print(lst)#['思科','IBM','Microsoft','apple','huawei']ASCII码表【保存外链图片失败,源站可能有防盗链机制,建议保存图片直接上传(img-U7YR9g3f-1647077804821)(imgs/ASCII.jpg)]reverse反转列表中的顺序lst=[1,2,3,4,5,6,7,8,9]lst.reverse()print(lst)#[9,8,7,6,5,4,3,2,1]