簡體   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