从列表中删除甚至没有

时间:2018-12-06 15:43:17

标签: python python-3.x logic

我正在尝试从列表中删除元素,即使该元素是偶数,代码也会部分运行,但不会从其中删除12个元素。我被困在这一点上,有谁知道这是什么问题,可能是什么优化的解决方案吗?

 lst=[0,3,5,8,12,2] #created a list 

 for i in lst:
     if(i%2==0):
         lst.remove(i)    #removes elements from the list 
  print(lst)


O/P:[3, 5, 12]

2 个答案:

答案 0 :(得分:1)

修改列表当您遍历列表是常见的陷阱。

正确而安全的方法是实际上使用列表理解或过滤器重新创建列表。

  • 列表理解版本:

    lst = [x for x in lst if x%2!=0]
    
  • 过滤器版本:

    lst = list(filter(lambda x: x%2!=0, lst))
    

两个代码段均导致:

lst = [3, 5]

答案 1 :(得分:0)

只需使用python功能强大的列表理解功能即可:

filtered_list =[i for i in old_list if i % 2 != 0]