我有一個包含元組的列表。我需要刪除任何包含nan的元組。我該怎么做?楠的類型是數學。它返回 True。math.isnan(tmp[1][1][1])我試過這個,它不起作用:import mathres = [t for t in tmp if not any(isinstance(n, float) and float('nan') for n in t)]print(res)我也試過這個,它不起作用:nans = {np.nan, math.nan, float('nan')}[x for x in tmp if not nans.intersection(x)] 下面是一個元組示例tmp = [[(0, 1.0), (5, nan), (10, 1.0), (15, nan), (20, 1.0), (25, nan), (30, 1.0), (35, nan), (40, 0.9808612440191388), (45, nan), (50, 0.9719298245614035), (55, nan), (60, 0.9712918660287081), (65, nan), (70, 0.8947368421052632), (75, nan), (80, 0.956140350877193), (85, nan), (90, 0.6140350877192983)], [(0, 0.9635627530364372), (5, nan), (10, 1.0), (15, nan), (20, 0.9924812030075187), (25, nan), (30, 1.0), (35, nan), (40, 0.9808612440191388), (45, nan), (50, 0.9508771929824561), (55, nan), (60, 0.9617224880382775), (65, nan), (70, 0.8173374613003096), (75, nan), (80, 0.8464912280701754), (85, nan), (90, 0.5614035087719298)]]
1 回答

暮色呼如
TA貢獻1853條經驗 獲得超9個贊
您可以使用嵌套列表理解來執行此操作。循環訪問列表的每個子列表,循環訪問每個元組,檢查元組是否包含 .nan
[[tup for tup in sublist if not any(map(math.isnan, tup))] for sublist in tmp]
# returns:
[[(0, 1.0),
(10, 1.0),
(20, 1.0),
(30, 1.0),
(40, 0.9808612440191388),
(50, 0.9719298245614035),
(60, 0.9712918660287081),
(70, 0.8947368421052632),
(80, 0.956140350877193),
(90, 0.6140350877192983)],
[(0, 0.9635627530364372),
(10, 1.0),
(20, 0.9924812030075187),
(30, 1.0),
(40, 0.9808612440191388),
(50, 0.9508771929824561),
(60, 0.9617224880382775),
(70, 0.8173374613003096),
(80, 0.8464912280701754),
(90, 0.5614035087719298)]]
添加回答
舉報
0/150
提交
取消