Return python 列表中的前 n 个非 NaN 值

Return first n non NaN value in python list

如何获取返回列表的前 n 个非 nan 值的元素?

例如:

lst = [nan, nan, nan, nan, nan, nan, nan, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

n = 3 

Output: [1,2,3]

谢谢。

您可以将 itertools.filterfalse()math.isnan() 一起使用:

import math, itertools
nan = float("nan")
lst = [nan, nan, nan, nan, nan, nan, nan, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list(itertools.islice(itertools.filterfalse(math.isnan, lst), 3))

itertools的使用主要是优化,可以用普通的切片代替:

[i for i in lst if not math.isnan(i)][:3]

正如@Pranav 在评论中强调的那样,即使第一种方法看起来有点复杂,它也会阻止处理整个列表,并在遇到前 3 个 non-nan 数字时立即停止。当您有大型列表时, 效率更高。