开发者社区 问答 正文

如何从Python列表中删除所有出现的元素?

ls = [[1], [1, 2], [1, 2, 3], [], [2], [2, 3], [], [], [3]]

是否有任何python list方法可以使我立即删除所有类似项。例如,我有一个二维列表'ls',其中有三个空列表项[]。我想一次删除所有空列表项。我知道可以使用“删除”和“循环”来完成。但是,有什么方法可以立即进行操作吗?简单来说:我希望所有的[[]]都被删除。因此答案就是这样。`[[1],[1、2],[1、2、3],[2],[2、3],[3]]

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 13:58:00 505 分享 版权
1 条回答
写回答
取消 提交回答
  • 没有remove_all方法或类似方法,但是最好的方法是使用列表理解或filter

    假设ls仅包含其他列表,您可以编写以下内容以删除所有出现的空列表[]

    清单理解 ls = [[1], [1, 2], [1, 2, 3], [], [2], [2, 3], [], [], [3]] ls = [x for x in ls if x] # now ls = [[1], [1, 2], [1, 2, 3], [2], [2, 3], [3]] 过滤 ls = [[1], [1, 2], [1, 2, 3], [], [2], [2, 3], [], [], [3]] ls = list(filter(None, ls)) # now ls = [[1], [1, 2], [1, 2, 3], [2], [2, 3], [3]] 泛化不只是空列表

    如果要删除所有给定元素elem的出现(不是空列表),则可以如下修改上述代码:

    ls = [x for x in ls if x != elem]
    
    ##### or #####
    
    ls = list(filter(lambda x: x != elem, ls))
    

    回答来源:stackoverflow

    2020-03-24 13:58:08
    赞同 展开评论