列表是比较常用的数据类型之一。本文整理了StackOverflow上列表操作的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-->452。append和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]#等价于:foriiny:x.append(i)3.检查list是否为空普通版:iflen(items)==0:print("emptylist")orifitems==[]:print("emptyList")优雅版:ifnotitems:print("emptylist")4.如何理解切片切片用于获取列表中指定范围的子集,语法很简单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[::]#省略both相当于复制一个列表,属于浅拷贝[1,2,3,4,5,6,7,8,9,10]5.如何复制一个列表对象第一种方法:new_list=old_list[:]第二种方法:new_list=list(old_list)第三种方法:importcopy#shallowcopynew_list=copy.copy(old_list)#deepcopynew_list=copy.deepcopy(old_list)6.如何获取索引lastelementinthelist列表中的元素不仅支持正数,还支持负数。正数表示从列表左侧开始索引,负数表示从列表右侧开始索引。有两种方法可以获取最后一个元素。>>>a=[1,2,3,4,5,6,7,8,9,10]>>>a[len(a)-1]10>>>a[-1]107,怎么样列表排序列表排序有两种方式,一种是列表自带的方法list.sort(),另一种是内置函数sorted(list)。复杂数据类型可以通过指定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'}]list对原list有sort方法Toreorder,指定key参数,key为匿名函数,item为列表中的字典元素。我们根据字典中的年龄排序。默认是按升序排序。指定reverse=True以降序排列项目。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','age':10},{'name':'cater','age':20},{'name':'Homer','age':39}]8.如何删除列表中的元素删除列表中的元素有三种方法。remove移除一个元素,只能移除第一次出现的元素。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','age':10},{'name':'cater','age':20},{'name':'Homer','age':39}]del指令:根据指定位置移除一个元素>>>a=[3,2,2,1]#移除第一个元素>>>dela[1][3,2,1]#当下表索引超出列表时,抛出IndexError异常>>>dela[7]traceback(mostrecentcalllast):File"
