【问题标题】:Python remove empty elements from list of listsPython从列表列表中删除空元素
【发布时间】:2016-05-13 07:42:31
【问题描述】:

我有一个这样的列表:

[['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)

【问题讨论】:

标签: python csv


【解决方案1】:

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

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]

【讨论】:

  • OP 注意:即使在 Python 3 中,list 调用也是可选的,具体取决于您需要做什么。迭代器并不邪恶,它们只是支持较少的东西,比如索引。
  • 确实,只是试图让数据更接近原始数据。迭代器真的很方便,如果您以后只需检查一次数据。
【解决方案2】:

您可以使用join

output = [' '.join(i).split() for i in list_of_list]

输出

[['A001', 'atendimento', 'sust', 'concession\xc3\xa1rio', 'adv', 'bom', 'adj'],['A001', 'falar', 'verb', 'ter', 'verb', 'nada', 'pron', 'carro', 'sust'],['A001','n\xc3\xa3o','adv','perguntar','verb','problema','sust','carro','sust'],['A001','n\xc3\xa3o','adv','oferecer','verb','ligar','verb','compra','sust'],['A001','n\xc3\xa3o','adv','oferecer','verb','servi\xc3\xa7o','sust','compra','sust']]

【讨论】:

    猜你喜欢
    • 2012-01-23
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 2019-04-06
    相关资源
    最近更新 更多