Python在列表中查找子列表的长度,忽略空条目

2024-09-27 07:32:20 发布

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

因此,很容易确定一个列表的子列表的长度:

list_length = [len(w) for w in data]

但是有没有一种方法可以在忽略任何空列表项的同时获得长度:''?在

我有一个列表列表,[data],其中一个子列表如下所示:

['GOM COD', '60', '$2.00', '', '$120.00']

因此list_length被确定为5。到目前为止,我将把列表列表转换为一个列表,以便删除所有''项,然后根据list_length的值将其转换回列表列表。然而,在这种情况下,在删除所有''之后,5list_length值最终是不正确的,并创建了一个混乱的数据帧。在

我确实尝试用data = list(filter(None, data))删除所有的空字符串项,但是只删除那些完全由''组成的子列表。在

因此,我希望最终能够在忽略或排除''s的同时确定子列表的长度,因为我必须在许多文件上运行这段代码,因此它必须足够健壮以读取正确的list_length。在

我的要求可能吗?或者是最聪明的方法?在

谢谢。在


Tags: 数据方法字符串innone列表fordata
2条回答

使用地图

data = ['GOM COD', '60', '$2.00', '', '$120.00']
[x for x in map(len, data) if x!=0]

或使用过滤器:

^{pr2}$

或使用贴图和过滤器:

map(len, list(filter(lambda x: x != '', data)))

使用列表理解:

[len(x) for x in data if x!=""]

似乎您在错误的级别应用了filter。我个人更喜欢列表理解,而不是filter在大多数情况下:

[len([x for x in w if x != '']) for w in data]

使用过滤器:

^{pr2}$

编辑

这样更有效,因为它不必构建新列表:

[sum(1 for x in w if x != '') for w in data]

为了澄清评论中出现的混乱,请记住我们得到了一个列表。以下是有效输入:

data = [
    ['a', 'b', 'c'],
    ['d', '', 'e'],
]

上面任何带有data的表达式的值都是[3, 2],因为第一个子列表有3个非空字符串,第二个子列表有2个非空字符串。在

相关问题 更多 >

    热门问题