【问题标题】:Removing even no from list [duplicate]从列表中删除甚至没有[重复]
【发布时间】:2018-12-06 15:43:16
【问题描述】:

如果元素是偶数,我正在尝试从列表中删除元素,代码部分运行它不会从中删除 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]

【问题讨论】:

  • 您正在修改循环中的同一个列表。从来都不是一个好主意。
  • 与其删除你不想要的元素,不如构建一个你想要的新元素列表。

标签: python python-3.x logic


【解决方案1】:

在遍历列表时修改列表是一个常见的陷阱。

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

  • 列表理解版本:

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

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

两个代码 sn-ps 导致:

lst = [3, 5]

【讨论】:

    【解决方案2】:

    只需使用python强大的列表推导:

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

    【讨论】:

    • 如果您能稍微解释一下代码 sn-p 将会很有用。您使用的代码的名称是什么,以便 OP 可以从中学习,并且将来可能会更好地搜索。
    • 谢谢你的建议,我是新手,所以很有帮助
    猜你喜欢
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    相关资源
    最近更新 更多