Как удалить элементы NaN (float) из списка смешанных типов данных
Если у вас есть смешанные типы в итерируемом, вот решение, которое не использует numpy:
from math import isnan
Z = ['a','b', float('NaN'), 'd', float('1.1024')]
[x for x in Z if not (
type(x) == float # let's drop all float values…
and isnan(x) # … but only if they are nan
)]
['a', 'b', 'd', 1.1024]
Оценка короткого замыкания означает, что isnan
не будет вызываться для значений, которые не относятся к типу 'float', поскольку (False and …
быстро оценивается как False
без необходимости вычисления с правой стороны.