Python 如果所有元素均为0,则删除子列表

Python 如果所有元素均为0,则删除子列表,python,list,for-loop,if-statement,Python,List,For Loop,If Statement,我有这个清单 lst = [ [2,0,1], [0,0,0], [3,2,4], [0,0,0,0] ] 我正在寻找一种方法来删除那些只有数字0的列表 因此,预期产出为: lst = [ [2,0,1], [3,2,4] ] 试试这个列表 [l for l in lst if not all(x == 0 for x in l)] 试试这个列表 [l for l in lst if not all(x == 0 for x in l)] 使用列表理解和任何: [l for l in

我有这个清单

lst = [ [2,0,1], [0,0,0], [3,2,4], [0,0,0,0] ]
我正在寻找一种方法来删除那些只有数字0的列表

因此,预期产出为:

lst = [ [2,0,1], [3,2,4] ]

试试这个列表

[l for l in lst if not all(x == 0 for x in l)] 

试试这个列表

[l for l in lst if not all(x == 0 for x in l)] 

使用列表理解和任何:

[l for l in lst if any(l)]

使用列表理解和任何:

[l for l in lst if any(l)]

我认为最好的方法是遍历每个子列表并删除所有零。如果剩下的子列表为空,请删除该子列表。你需要提供一些“我尝试过的”来获得实际帮助。你所说的“自动方式”是什么意思?没有什么是自动的:你必须编写算法来做事情。
list(filter(any,lst))
是一种有趣的方法,如果你的列表只有int。我认为最好的方法是循环遍历每个子列表并删除所有的零。如果剩下的子列表为空,请删除该子列表。你需要提供一些“我尝试过的”来获得实际帮助。你所说的“自动方式”是什么意思?没有什么是自动的:你必须编写算法来做事情。
list(filter(any,lst))
是一种有趣的方式,如果你的列表只有int。