需求:
有一个列表:ls = [1,2,3,4,5,6],要求删除其中的偶数
如果是下面这种方法,在遍历的过程中删除,会有问题
for i in range(len(ls)): if ls[i]%2 == 0: del ls[i]
异常:IndexError: list index out of range
因为删除一个元素后,列表的长度改变了,所以会报下标越界。
可以采取一下三种方法:
1.
ls = [x for x in ls if x%2!=0] #列表解析
2.
ls = filter(lambda x:x%2!=0,ls) #filter
3.
for i in range(len(ls)-1,-1,-1): #倒序 if ls[i]%2 == 0: del ls[i]
时间: 2024-10-29 09:58:36