繁体   English   中英

过滤列表列表中的元组

[英]Filter tuples inside a list of lists

我试图根据其第二个项目“”来过滤列表列表中的元组。

对于以下列表

[[( “AA”, “AA”),( “QQ”, “”)],[( “CC”, “”),( “QQ”, “”)],...]

我想得到

[[( “AA”, “AA”)],[],...]

我已经试过了

[(tup[0] for tup in sub_list if tup[0]!="") for sub_list in list]

但得到一份清单

[<generator object <genexpr> at ]

有任何想法吗?

谢谢!!!

圆括号(x for x in ...)导致生成器表达式,而方括号[x for x in ...]是列表推导列表。

另外,当你比较''空字符串最后元组元素时,这就是tup[1]

>>> [[tup for tup in sub_list if tup[1] != ""] for sub_list in lst]
[[('AA', 'AA')], []]

如果你得到这个[<generator object <genexpr> at ]不是错误或什么的。

尝试在循环中打印它,可能是这样的:

for i in list:
    print(i)

那么使用... filter功能呢?

[filter(lambda x: x[1]!="", sublist) for sublist in list]

编辑 :阅读其他答案,我遇到了all ,这在这种情况下非常整洁:

[filter(all, sublist) for sublist in list]

您在列表推导中嵌套了生成器理解,您应该只是嵌套列表推导。

L = [[('aa','')],[('aa','bb')]]
[[item for item in sublist if item[1] != ''] for sublist in L ]
>> [[], [('aa', 'bb')]]
[[tup for tup in sub_list if all(tup) and tup] for sub_list in lst]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM