Python遍历删除元素

需求:

有一个列表: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]

 

posted on 2015-11-12 22:25  李俊伟  阅读(226)  评论(0编辑  收藏  举报

导航