Python从lis中删除空列表

2024-03-29 11:43:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表,里面有几个空列表。我按照这里的指示(Python: How to remove empty lists from a list?)尝试过滤空列表,但是失败了,我真的没有理由。在

我的列表:

data: [['#0721', '', '', '', ''], ['', '', '', '', ''], ['', '', '', '', ''], ['GBE COD', '746', '$2.00', '', '$1,492.00'], ['GBW COD', '13,894', '$0.50', '', '$6,947.00'], ['GOM COD', '60', '$2.00', '', '$120.00'], ['GB WINTER FLOUNDER', '94,158', '$0.25', '', '$23,539.50'], ['GOM WINTER FLOUNDER', '3,030', '$0.50', '', '$1,515.00'], ['GBE HADDOCK', '18,479', '$0.02', '', '$369.58'], ['GOM HADDOCK', '0', '$0.02', '', '$0.00'], ['GBW HADDOCK', '110,470', '$0.02', '', '$2,209.40'], ['HAKE', '259', '$1.30', '', '$336.70'], ['PLAICE', '3,738', '$0.40', '', '$1,495.20'], ['POLLOCK', '3,265', '$0.02', '', '$65.30'], ['WITCH FLOUNDER', '1,134', '$1.30', '', '$1,474.20'], ['SNE YT', '1,458', '$0.65', '', '$947.70'], ['GB YT', '4,499', '$0.70', '', '$3,149.30'], ['REDFISH', '841', '$0.02', '', '$16.82'], ['', '', '', '', ''], ['', '', '', '', ''], ['54 DAS @ $8.00/DAY = 432.00', '', ''], ['', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '']]

我的代码:

^{pr2}$

产生:

second data: <filter object at 0x05F23CF0>
third data: [['#0721', '', '', '', ''], ['', '', '', '', ''], ['', '', '', '', ''], ['GBE COD', '746', '$2.00', '', '$1,492.00'], ['GBW COD', '13,894', '$0.50', '', '$6,947.00'], ['GOM COD', '60', '$2.00', '', '$120.00'], ['GB WINTER FLOUNDER', '94,158', '$0.25', '', '$23,539.50'], ['GOM WINTER FLOUNDER', '3,030', '$0.50', '', '$1,515.00'], ['GBE HADDOCK', '18,479', '$0.02', '', '$369.58'], ['GOM HADDOCK', '0', '$0.02', '', '$0.00'], ['GBW HADDOCK', '110,470', '$0.02', '', '$2,209.40'], ['HAKE', '259', '$1.30', '', '$336.70'], ['PLAICE', '3,738', '$0.40', '', '$1,495.20'], ['POLLOCK', '3,265', '$0.02', '', '$65.30'], ['WITCH FLOUNDER', '1,134', '$1.30', '', '$1,474.20'], ['SNE YT', '1,458', '$0.65', '', '$947.70'], ['GB YT', '4,499', '$0.70', '', '$3,149.30'], ['REDFISH', '841', '$0.02', '', '$16.82'], ['', '', '', '', ''], ['', '', '', '', ''], ['54 DAS @ $8.00/DAY = 432.00', '', ''], ['', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '']]

结果什么都没做,为什么?在


Tags: 列表datacodytgbwinterwitchflounder
2条回答

您可以使用any(a_list),如果a_list的任何元素的计算结果为True,那么它就是True,就像非空字符串一样。在

data = [['#0721', '', '', '', ''], ['', '', '', '', ''], ['', '', '', '', ''], ['GBE COD', '746', '$2.00', '', '$1,492.00'], ['GBW COD', '13,894', '$0.50', '', '$6,947.00'], ['GOM COD', '60', '$2.00', '', '$120.00'], ['GB WINTER FLOUNDER', '94,158', '$0.25', '', '$23,539.50'], ['GOM WINTER FLOUNDER', '3,030', '$0.50', '', '$1,515.00'], ['GBE HADDOCK', '18,479', '$0.02', '', '$369.58'], ['GOM HADDOCK', '0', '$0.02', '', '$0.00'], ['GBW HADDOCK', '110,470', '$0.02', '', '$2,209.40'], ['HAKE', '259', '$1.30', '', '$336.70'], ['PLAICE', '3,738', '$0.40', '', '$1,495.20'], ['POLLOCK', '3,265', '$0.02', '', '$65.30'], ['WITCH FLOUNDER', '1,134', '$1.30', '', '$1,474.20'], ['SNE YT', '1,458', '$0.65', '', '$947.70'], ['GB YT', '4,499', '$0.70', '', '$3,149.30'], ['REDFISH', '841', '$0.02', '', '$16.82'], ['', '', '', '', ''], ['', '', '', '', ''], ['54 DAS @ $8.00/DAY = 432.00', '', ''], ['', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '']]

non_empty = [sublist for sublist in data if any(sublist)]
print(non_empty)

[['#0721', '', '', '', ''],
 ['GBE COD', '746', '$2.00', '', '$1,492.00'],
 ['GBW COD', '13,894', '$0.50', '', '$6,947.00'],
 ['GOM COD', '60', '$2.00', '', '$120.00'],
 ['GB WINTER FLOUNDER', '94,158', '$0.25', '', '$23,539.50'],
 ['GOM WINTER FLOUNDER', '3,030', '$0.50', '', '$1,515.00'],
 ['GBE HADDOCK', '18,479', '$0.02', '', '$369.58'],
 ['GOM HADDOCK', '0', '$0.02', '', '$0.00'],
 ['GBW HADDOCK', '110,470', '$0.02', '', '$2,209.40'],
 ['HAKE', '259', '$1.30', '', '$336.70'],
 ['PLAICE', '3,738', '$0.40', '', '$1,495.20'],
 ['POLLOCK', '3,265', '$0.02', '', '$65.30'],
 ['WITCH FLOUNDER', '1,134', '$1.30', '', '$1,474.20'],
 ['SNE YT', '1,458', '$0.65', '', '$947.70'],
 ['GB YT', '4,499', '$0.70', '', '$3,149.30'],
 ['REDFISH', '841', '$0.02', '', '$16.82'],
 ['54 DAS @ $8.00/DAY = 432.00', '', '']]



你已经指出你的列表列表是空的。在

要解决您的问题,您应该更改传递给filter的第一个参数。filter(function,iterable)将返回一个列表,其中包含函数返回true的iterable值。在

在你的案子上,试试:

def isEmpty(list):
    return any(list)

print filter(isEmpty, data)

相关问题 更多 >