甚至从列表中删除no



我试图从列表中删除元素,如果元素是偶数,代码部分运行,但没有从中删除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]

在循环列表时修改列表是一个常见的陷阱。

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

  • 列表理解版本:

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

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

两个代码段都会导致:

lst = [3, 5]

简单使用python强大的列表理解:

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

最新更新