![](/img/trans.png)
[英]Remove tuple from list containing list of tuples if certain condition is met
[英]Remove a tuple containing nan in list of tuples — Python
我有很長的元組列表,並且想要使用Python刪除其中包含nan的任何元組。
我目前所擁有的:x = [('Recording start',0),(nan,4),(nan,7),...,('Event marker 1',150)]
我正在尋找的結果:x = [('記錄開始',0),('事件標記1',150)]
我嘗試使用np.isnan及其變體,但沒有成功,並不斷出現錯誤:輸入類型不支持ufunc'isnan',並且根據輸入,不能安全地將輸入強制轉換為任何受支持的類型強制轉換規則“安全”
任何建議,將不勝感激!!
您可以使用列表推導來檢查元組中的任何項目是否為NaN。 首先檢查類型,然后使用math.isnan
檢查,因為它不適用於其他類型:
import math
x = [('Recording start', 0), (float('nan'), 4), (float('nan'), 7), ('Event marker 1', 150)]
res = [t for t in x if not any(isinstance(n, float) and math.isnan(n) for n in t)]
print(res)
輸出:
[('Recording start', 0), ('Event marker 1', 150)]
使用列表理解:
x = [('Recording start', 0), (nan, 4), (nan, 7), ('Event marker 1', 150)]
new = [i for i in x if nan not in i]
res = [n for n in x if not nan in n]
返回x
中沒有對象nan
所有對象。
至少在我使用python編寫nan時,reture被定義為“未定義錯誤”,這就是為什么我自己定義它的原因。 我認為您可以根據需要使用Python過濾器功能。 參見示例:
nan = float('nan')
lst = [('Recording start', 0), (nan, 4), (nan, 7), ('Event marker 1', 150)]
y = filter( lambda x: nan not in x, lst)
print y
[('錄制開始',0),('事件標記1',150)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.