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

从基础开始掌握Python的列表和元组

时间:2023-03-26 11:00:47 Python

1序列序列是一个连续的内存空间,可以存储多个值。这些值按照一定的顺序排列,可以通过每个值所在位置的编号(称为索引)来访问。.Python序列结构主要包括列表、元组、集合、字典和字符串;1.1在索引序列中,每个元素都有自己的编号(index)。从起始元素开始,索引值从0开始递增。也可以是从右向左数的负数;它也可以是从右到左计数的负数;name=["zhangsan","lisi","wangwu"]print(name[0])print(name[2])print(name[-1])结果:zhangsanwangwuwangwu1.2切片语法:name[start:end:step]name:表示序列的名称;start:切片的起始位置,默认为0end:切片的结束位置,默认为sequence的长度step:切片步长,默认为1name=["Hokage","Naruto","佐助","樱花"]num=[1,2,3,4,5,6,7,8,9,10]print(name[0:2])print(name[0:2:1])print(num[0:9:2])print(name[:])print(name)结果:['Hokage','Naruto']['Hokage','Naruto'][1,3,5,7,9]['Hokage','Naruto','Sasuke','Sakura']['Hokage','Naruto','Sasuke','Sakura']1.3序列添加两个序列类型必须相同。要添加两个序列,请使用“+”连接两个序列。num_str=["1","2","3","4","5"]num=[1,2,3,4,5]name_str=["Luffy","Solo","Chopper","Sanji","NaUS"]num_new=num+num_strprint(num_new)name_str_new=name_str+num_strprint(name_str_new)结果:[1,2,3,4,5,'1','2','3','4','5']['路飞','索罗','乔巴','山治','娜美','1','2','3','4','5']不同类型的不能添加序列,比如列表和元组num_str=["1","2","3","4","5"]num=(1,2,3,4,5)num_new=num+num_strprint(num_new)结果:追溯(最近调用最后一次):文件“F:/python_study/main.py”,第6行,在num_new=num+num_strTypeError:只能连接元组(不是“列表”)到Tuple1.4乘法用一个数n与一个序列相乘产生一个新的序列,表示将原序列重复n次mi=["我是米粉","我是忠实的米粉"]mi_new=mi*3print(mi_new)result:['我是米粉','我是忠实米粉','我是米粉','我是忠实米粉','我是米粉','我我是忠实米粉']也可以初始化序列的长度mi=[None]*3print(mi)result:[None,None,None]1.5判断一个元素是否是一个序列(element)的成员使用检查元素是否是序列成员的关键字phone=["mate9","mate10","mate20","mate30","mate40"]print("mate40"inphone)print("mate40pro"inphone)结果:TrueFalse使用notin检查关系是否不包含phone=["mate9","mate10","mate20","mate30","mate40"]print("p40pro&qu哦;notinphone)print("p40pro"inphone)result:TrueFalse1.6计算序列的长度、最大值和最小值max()返回序列中的最大元素,min()返回最小值,len()returns序列的长度num=[10,20,30,40,50,60]print(max(num))print(min(num))print(len(num))result:60106和序列相关的内置-infunctionsFunctionfunctionlen()计算序列的长度,即返回序列中包含多少个元素max()找到序列中最大的元素。注意,对序列使用sum()函数时,加法运算必须是数字,不能是字符或字符串,否则函数会抛出异常,因为解释器无法判断是否要做连接操作(+运算符可以连接两个序列),或者做求和运算。min()查找序列中的最小元素。list()将序列转换为列表。str()将序列转换为字符串。sum()计算按元素求和。sorted()对元素进行排序。reversed()反转序列中的元素。enumerate()将序列组合成索引序列,主要用于for循环。num=[20,60,40,30,50,10]num_new=sorted(num)print(sum(num))print(num)print(sorted(num))结果:210[20,60,40,30,50,10][10,20,30,40,50,60]内容很多,我要坚持。...2python中内置变量序列用“[]”包围元素,相邻元素用“,”分隔2.1列表的创建和删除使用赋值运算符直接创建列表语法:name_list=[element1,element2.元素3...]name_list=["ABC","DEF","GHI","JKL"]print(name_list)result:['ABC','DEF','GHI','JKL']创建一个空列表语法:em_name_list=[]创建一个数字列表语法:list(data)new_list=list(range(1,10))print(new_list)结果:[1,2,3,4,5,6,7,8,9]删除列表语法:delname_listnew_list=list(range(1,10))print(new_list)delnew_listprint(new_list)结果:[1,2,3,4,5,6,7,8,9]Traceback(最近调用last):文件“F:/python_study/main.py”,第7行,在print(new_list)NameError:name'new_list'isnotdefined2.2访问列表元素组合与print()函数和角标结合使用new_list=["小学生","初中生","highschoolstudent","collegestudent"]print(new_list)print(new_list[3])print(new_list[0])result:['小学生','初中生','高中生','大学生']大学生、小学生2.3遍历list使用for循环实现new_list=["小学生","初中生","高中生","大学生"]forstudentin新名单:print(student)result:小学生、初中生、高中生、大学生使用for循环和enumerate()函数实现,可以同时输出元素内容和索引的值new_list=["小学生","初中生","高中生","大学生"]forindex,iteminenumerate(new_list):print(index,item)结果:0小学生1初中高中生2高中生3大学生2.4添加、修改、删除列表元素添加元素①name_list。最后追加my_list=["小学生","初中生","高中生","大学生"]my_list.append("研究生")print(my_list)result:['小学student','初中生','高中生','大学生','研究生']②name_list.extend(new_name_list):将new_name_list中的所有元素添加到name_listname_list=["小学生","初中生","高中生","大学生"]new_name_list=["小学","初中","高中","大学"]print(name_list)name_list.extend(new_name_list)print(name_list)result:['小学生','初中生','高中生','大学生']['小学生','初中生','高中生','大学生','小学','中学','高中','大学']修改元素:使用num=[1,2带角标,3,4,5]print(num)num[0]=11num[4]=55print(num)result:[1,2,3,4,5][11,2,3,4,55]delete元素①被删除索引,使用del:num=[1,2,3,4,5]print(num)delnum[0]print(num)result:[1,2,3,4,5][2,3,4,5]②根据元素值删除,使用remove:num=[1,2,3,4,5]print(num)num.remove(1)print(num)结果:[1,2,3,4,5][2,3,4,5]2.5对列表进行统计计算获取指定元素出现的次数获取指定元素第一次出现的下标统计值列表的元素和#-*-coding:utf-8-*-#使用count()方法获取指定元素出现的次数num=[1,2,3,1,2,3,1,2,3]print(num.count(1))#使用index()方法获取指定元素第一次出现的下标print(num.index(3))#使用sum()计算数值列表元素的和print(sum(num))结果:32182.6排序listsort()方法①语法:name_list.sort(key=None,reverse=False)②描述:key提取一个key进行比较,reverse为True为降序,False为升序或dernum=[1,2,3,1,2,3,1,2,3]print("原始序列:",num)num.sort(reverse=False)print("升序:",num)num.sort(reverse=True)print("Descendingorder:",num)结果:原序列:[1,2,3,1,2,3,1,2,3]升序:[1,1,1,2,2,2,3,3,3]降序:[3,3,3,2,2,2,1,1,1]使用sorted()方法①语法:sorted(list_name,key=None,reverse=False)②解释:listname为列表名,key为指定规则,reverse为True为降序,False为升序#-*-coding:utf-8-*-num=[1,2,3,1,2,3,1,2,3]print("原始Sequence:",num)new_num=sorted(num,reverse=False)print("Ascendingorder:",new_num)new_num_l=sorted(num,reverse=True)print("Descendingorder:",new_num_l)result:原始序列:[1,2,3,1,2,3,1,2,3]升序:[1,1,1,2,2,2,3,3,3]降序:[3,3,3,2,2,2,1,1,1]2.7列表理解生成指定范围内的值列表生成指定要求的列表选择列表中满足条件的元素组成新列表#-*-coding:utf-8-*-importrandom#生成指定范围内的值列表num=[random.randint(10,50)foriinrange(20)]print("1、从10到50中随机抽取20个数字放入num列表中:",num)#生成指定要求的列表mm=1num_list=[mm+iforiinrange(10)]print("2,每次给变量mm加上i,循环10次:",num_list)#在列表中选择符合条件的元素组成新列表zz=[20,30,40,50,60,70,80,90,100]new_zz=[jforjinzzifj>60]print("3,原序列:",zz)print("4,取60以上后的新序列:",new_zz)结果:1.从10到50之间随机抽取20个数并将它们放入num列表中:[21,43,48,40,14,34,35,28,45,11,33,33,19,26,18,23,17,37,39,27]2.每次给变量mm加上i,循环10次:[1,2,3,4,5,6,7,8,9,10]3。原始序列:[20,30,40,50,60,70,80,90,100]4。超过60后的新序列:[70,80,90,100]3元组元组不是变量序列用“()”括起来,元素用逗号分隔3.1元组的创建和删除直接使用赋值运算符创建元组创建空元组创建数值元组删除元组#-*-coding:utf-8-*-#创建一个空元组name=()print("Thisisanemptytuple:",name)#直接使用赋值运算符创建一个元组name_new=("laoli","xiaozhang","laowang")print("创建一个tuple:",name_new)#创建一个值元组num=tuple(range(1,10,2))print("创建一个值元组:",num)#删除一个元组delnumprint("删除numtuples:",num)结果:这是一个空元组:()创建元组:('laoli','xiaozhang','laowang')创建数值元组:(1,3,5,7,9)Traceback(mostrecentcalllast):File"F:/python_study/main.py",line17,inprint("Deletenumtuple:",num)NameError:name'num'isnotdefined3.2访问元组元素print()和下标#-*-coding:utf-8-*-num=(1,2,3,4,5,6,7,8)print(num[0],num[7])print(num[-1:])result:18(8,)3.3修改元组元素元组是一个不可变序列,不能修改单个元素,重新赋值生成新的元组#-*-编码:utf-8-*-num=(1,2,3,4,5,6,7,8)num1=(9,10)num2=num+num1print(num2)结果:(1,2,3,4,5,6,7,8,9,10)3.4元组推导类似于列表,使用推导可以快速生成一个元组(不再详述)3.5面试要求:元组和列表的区别相同点:①都属于序列;②All可以按特定顺序存储一组元素;③没有类型限制区分:①链表属于可变序列,元素可以被修改和删除;元组属于不可变序列,元素不可修改,但可以替换;②列表可以使用append()、extend()、insert()、remove()、pop()等方法,元组不能;③列表可以使用切片,但元组不能;④元组比列表更容易访问并且处理速度应该更快;⑤列表不能作为字典的键值,元组可以。4知识脑图