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

Python最常见的10个问题(列表)

时间:2023-03-26 12:42:11 Python

列表是Python中使用最多的数据结果。如何高效地操作链表是提高代码运行效率的关键。本文列举了10种常用的列表操作,希望对你有所帮助。1、迭代列表时如何访问普通版本的列表下标索引:items=[8,23,45]forindexinrange(len(items)):print(index,"-->",items[index])>>>0-->81-->232-->45优雅版:forindex,iteminenumerate(items):print(index,"-->",item)>>>0-->81-->232-->45enumerate也可以指定元素的第一个元素从哪里开始,默认为0,也可以指定从1开始:forindex,iteminenumerate(items,start=1):print(index,"-->",item)>>>1-->82-->233-->452append和extend方法有什么区别append的意思是追加某条数据作为一个新的元素到列表的末尾,它的参数可以是任何对象x=[1,2,3]y=[4,5]x.append(y)print(x)>>>[1,2,3,[4,5]]extend的参数必须是一个可迭代对象,也就是说对象中的所有元素都被一个一个追加到列表的后面x=[1,2,3]y=[4,5]x.extend(y)print(x)>>>[1,2,3,4,5]#等价tto:foriiny:x.append(i)3.检查列表是否为空普通版:iflen(items)==0:print("emptylist")orifitems==[]:print("emptylist")优雅版:ifnotitems:print("emptylist")4.如何理解sliceslices用于获取列表中指定范围的子集,语法很简单items[start:end:step]元素从start到end-1的位置。step表示步长,默认为1,表示连续获取,如果step为2,表示每隔一个元素获取一次。a=[1,2,3,4,5,6,7,8,9,10]>>>a[3:8]#第3和第8位置之间的元素[4,5,6,7,8]>>>a[3:8:2]#第3和第8位置之间的元素,每隔一个元素获取[4,6,8]>>>a[:5]#省略start表示从第0个元素开始[1,2,3,4,5]>>>a[3:]#省略end表示最后一个元素[4,5,6,7,8,9,10]>>>a[::]#两者都省略相当于复制一个列表,是浅拷贝[1,2,3,4,5,6,7,8,9,10]5.如何复制一个列表对象第一种方法:new_list=old_list[:]第二种方法:new_list=list(old_list)第三种方法:importcopy#浅拷贝new_list=copy.copy(old_list)#深拷贝new_list=copy.deepcopy(old_list)6。如何获取列表中最后一个元素的索引列表中的元素不仅支持正数,还支持负数。正数表示从列表左侧开始索引,负数表示从列表右侧开始索引。获取最后一个元素的方法有两种。>>>a=[1,2,3,4,5,6,7,8,9,10]>>>a[len(a)-1]10>>>a[-1]107.如何列表排序列表排序有两种方式,一种是列表自带的sort,一种是内置函数sorted。复杂数据类型可以通过指定key参数进行排序。字典列表,根据字典元素中的年龄字段排序:items=[{'name':'Homer','age':39},{'name':'Bart','age':10},{"name":'cater','age':20}]items.sort(key=lambdaitem:item.get("age"))print(items)>>>[{'age':10,'name':'Bart'},{'age':20,'name':'cater'},{'age':39,'name':'Homer'}]该列表有一个排序方法,用于对originalReorderthelist,指定key参数,key为匿名函数,item为列表中的字典元素。我们根据字典中的年龄排序。默认是按升序排序。指定reverse=True以降序排序。items.sort(key=lambdaitem:item.get("age"),reverse=True)>>>[{'name':'Homer','age':39},{'name':'cater','age':20},{'name':'Bart','age':10}]如果不想改变原来的列表,而是生成一个新的有序列表对象,可以使用内置的函数sorted,它返回一个新列表items=[{'name':'Homer','age':39},{'name':'Bart','age':10},{"name":'cater','age':20}]new_items=sorted(items,key=lambdaitem:item.get("age"))print(items)>>>[{'name':'Homer','age':39},{'name':'Bart','age':10},{'name':'cater','age':20}]print(new_items)>>>[{'name':'Bart','年龄':10},{'姓名e':'cater','age':20},{'name':'Homer','age':39}]8.如何删除列表中的元素删除列表中元素的方法有3种remove一个元素,并且只能移除第一次出现的元素>>>a=[0,2,2,3]>>>a.remove(2)>>>a[0,2,3]#如果要删除的元素不在列表中,则抛出ValueError异常>>>a.remove(7)Traceback(mostrecentcalllast):File"",line1,inValueError:列表。remove(x):xnotinlistdel根据指定位置移除一个元素>>>a=[3,2,2,1]#移除第一个元素>>>dela[1][3,2,1]#当超出列表下表索引时,抛出IndexError异常>>>dela[7]Traceback(mostrecentcalllast):File"",line1,inIndexError:listassignmentindexoutofrangepop类似于del,但是pop方法可以返回被移除的元素>>>a=[4,3,5]>>>a.pop(1)3>>>a[4,5]#同理,超过list下表索引时,抛出IndexError异常>>>a.pop(7)Traceback(mostrecentcalllast):File"",line1,inIndexError:popindexoutofrange9,howtoconnecttwolistslistone=[1,2,3]listtwo=[4,5,6]mergedlist=listone+listtwoprint(mergelist)>>>[1,2,3,4,5,6]list实现了+的运算符重载,使得+不仅支持值相加,还支持两个相加列出来,只要你实现了对象的__add__操作之后,任何对象都可以实现+操作,例如:classUser(object):def__init__(self,age):self.age=agedef__repr__(self):return'User(%d)'%self.agedef__add__(self,other):age=self.age+other.agereturnUser(age)user_a=User(10)user_b=User(20)c=user_a+user_bprint(c)>>>用户(30)10。如何随机获取列表??中的一个元素importrandomitems=[8,23,45,12,78]>>>random.choice(items)78>>>random.choice(items)45>>>random.choice(项目)12