删除具有空列表的列表

时间:2016-02-05 11:55:24

标签: python list

我有以下列表:

a = [[['trial1', 'trial2'], 4], [[], 2]]

我想删除空列表中的列表。所以结果如下:

c = [[['trial1', 'trial2'], 4]]

我使用以下代码:

c = []
for b in a:
    temp =[x for x in b if x]
    if len(temp)>1:
        c.append(temp)

它运作正常,但似乎不是完成此任务的“好方法”。有更优雅的方式吗?

4 个答案:

答案 0 :(得分:4)

使用list comprehension

c = [x for x in a if [] not in x]

答案 1 :(得分:4)

c = [l for l in a if [] not in l]

答案 2 :(得分:1)

您可以使用list comprehensionall功能检查列表中的所有内容是否都评估为True

c = [i for i in a if all(i)]

print(c)
[[['trial1', 'trial2'], 4]]

答案 3 :(得分:0)

您可以使用filter内置功能。<​​/ p>

-p

由于在Python 3中过滤器是惰性的,您可能需要显式转换为列表。

a = [[['trial1', 'trial2'], 4], [[], 2]]
assert filter(lambda o: [] not in o, a) == [[['trial1', 'trial2'], 4]]