如何从一个列表中的子列表中删除[NaN]?

4

I have the following

a = [[u'63764'], [u'63764'], [u'63764'], [u'70272'], [u'98362'], [u'NaN'], [u'NaN']]

我该如何删除所有的[NaN],以得到以下结果:
a = [[u'63764'], [u'63764'], [u'63764'], [u'70272'], [u'98362']]

Thank You


你为什么有一个由1个元素列表组成的列表? - user2357112
1个回答

5

使用math.isnan来检查数字是否为 NaN

>>> NaN = float('nan')
>>> import math
>>> math.isnan(1)
False
>>> math.isnan(NaN)
True

使用列表推导式

>>> [xs for xs in a if not any(math.isnan(x) for x in xs)]
[[1], [1], [2], [2], [2], [3], [3]]

根据问题编辑更新:

>>> a = [[u'63764'], [u'63764'], [u'63764'], [u'70272'], [u'98362'], [u'NaN'], [u'NaN']]
>>> [x for x in a if x != [u'NaN']]
[[u'63764'], [u'63764'], [u'63764'], [u'70272'], [u'98362']]

它给我这个错误 - TypeError: 需要一个浮点数 我已经更新了问题。你能再看一下吗? - user3309069
@user3309069,我根据问题的编辑更新了答案。 - falsetru

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接