[英]Filtering a list of tuples filled with None in python
假設我有一個如下的元組列表:
my_list = [(2, 3), (3, None), (None, None), (3, 4), (None, 2)]
我如何過濾此列表以:
None
元組 None
的元組 因此,每種情況下的結果應為:
[(2, 3), (3, 4)]
[(2, 3), (3, None), (3, 4), (None, 2)]
使用列表推導過濾您的特定條件:
no_none = [t for t in my_list if None not in t]
some_none = [t for t in my_list if t != (None, None)]
請注意,過濾會選擇不符合您的條件的元素,因此第一個選擇不包含None
的所有元組,第二個選擇不等於(None, None)
元組的所有元組。
演示:
>>> my_list = [(2, 3), (3, None), (None, None), (3, 4), (None, 2)]
>>> [t for t in my_list if None not in t]
[(2, 3), (3, 4)]
>>> [t for t in my_list if t != (None, None)]
[(2, 3), (3, None), (3, 4), (None, 2)]
您可以使用all
來確保all都不為None
,並且可以對表達式使用any
:any值都不為None
。
>>> my_list = [(2,3), (3,None), (None,None), (3,4), (None,2)]
>>> filter(lambda x:all(i is not None for i in x), my_list)
[(2, 3), (3, 4)]
>>> filter(lambda x:any(i is not None for i in x), my_list)
[(2, 3), (3, None), (3, 4), (None, 2)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.