Czy można łatwo usunąć wartości NaN dla obiektu zestawu Python? Biorąc pod uwagę, że wartości NaN nie są równe (i float('nan') is float('nan')
jest również False
), możesz otrzymać wiele wartości NaN w zestawie.Usuń wartość NaN z zestawu
>>> a = set((float('nan'), float('nan'), 'a'))
>>> a
{nan, nan, 'a'}
Najlepszym mogę wymyślić to, aby zdefiniować funkcję jak math.isnan, ale że jest tolerancyjny rodzajów non obrocie jak:
def my_isnan(x):
try:
return math.isnan(x)
except TypeError:
return False
Następnie można użyć zestawu zrozumieniem jak to:
>>> {x for x in a if not my_isnan(x)}
{'a'}
Umieszczenie Nans w zestawie w pierwszej kolejności jest to zły pomysł. Naruszają założenia, na których zbudowany jest zestaw. – user2357112
Jakie jest pytanie? –
@ValentinLorentz Może zdanie, które kończy się znakiem zapytania? –