我有以下列表:
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)
它运作正常,但似乎不是完成此任务的“好方法”。有更优雅的方式吗?
答案 0 :(得分:4)
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 comprehension
和all
功能检查列表中的所有内容是否都评估为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]]