过滤列表列表中的元组

时间:2013-11-20 20:39:14

标签: python list

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

以下列表

[[( “AA”, “AA”),( “QQ”, “”)],[( “CC”, “”),( “QQ”, “”)],...] < / p>

我想得到

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

我已经尝试过这个

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

但获取

列表
[<generator object <genexpr> at ]

有什么想法吗?

感谢!!!

5 个答案:

答案 0 :(得分:2)

括号(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')], []]

答案 1 :(得分:0)

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

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

for i in list:
    print(i)

答案 2 :(得分:0)

使用... filter功能怎么样?

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

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

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

答案 3 :(得分:0)

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

L = [[('aa','')],[('aa','bb')]]
[[item for item in sublist if item[1] != ''] for sublist in L ]
>> [[], [('aa', 'bb')]]

答案 4 :(得分:0)

[[tup for tup in sub_list if all(tup) and tup] for sub_list in lst]