簡體   English   中英

在python中過濾填充為None的元組列表

[英]Filtering a list of tuples filled with None in python

假設我有一個如下的元組列表:

my_list = [(2, 3), (3, None), (None, None), (3, 4), (None, 2)]

我如何過濾此列表以:

  1. 刪除所有包含至少一個 None元組
  2. 刪除兩個值都為None的元組

因此,每種情況下的結果應為:

  1. [(2, 3), (3, 4)]
  2. [(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM