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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
没有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