Skip to main content
 首页 » 编程设计

Python从列表列表中删除空元素

2025年05月04日14bluestorm

我有一个这样的列表列表:

[['A001', 'atendimento', 'sust', 'concessionário', 'adv', 'bom', 'adj', '', ''], 
 ['A001', 'falar', 'verb', 'ter', 'verb', 'nada', 'pron', 'carro', 'sust', '', ''], 
 ['A001', 'não', 'adv', 'perguntar', 'verb', 'problema', 'sust', 'carro', 'sust', '', ''], 
 ['A001', 'não', 'adv', 'oferecer', 'verb', 'ligar', 'verb', 'compra', 'sust', '', ''], 
 ['A001', 'não', 'adv', 'oferecer', 'verb', 'serviço', 'sust', 'compra', 'sust', '', '']] 

我想从每个列表中删除空元素,得到一个没有空元素的新列表列表:

[['A001', 'atendimento', 'sust', 'concessionário', 'adv', 'bom', 'adj'], 
 ['A001', 'falar', 'verb', 'ter', 'verb', 'nada', 'pron', 'carro', 'sust'], 
 ['A001', 'não', 'adv', 'perguntar', 'verb', 'problema', 'sust', 'carro', 'sust'], 
 ['A001', 'não', 'adv', 'oferecer', 'verb', 'ligar', 'verb', 'compra', 'sust'], 
 ['A001', 'não', 'adv', 'oferecer', 'verb', 'serviço', 'sust', 'compra', 'sust']] 

我怎样才能做到这一点?

我试过这个:

str_list = filter(None, list_of_lists) 

请您参考如下方法:

您的尝试将从列表列表中删除空列表,而不是从子列表中删除空元素。相反,将过滤器应用于子列表:

str_list = [list(filter(None, lst)) for lst in list_of_lists] 

对 filter() 的调用被包裹在 list() 中,以防你稍后在 python3 中尝试这个,如 filter() 在 py3 中返回一个迭代器。

请注意,由于您将其标记为 您可能必须小心,因为过滤可能会产生长度不同的行和错误列中的项目。如果您知道每一行的最后 2 个项目总是空的,您可以将它们切掉:

str_list = [row[:-2] for row in list_of_lists]