替换列表中的元素

时间:2016-04-15 08:47:11

标签: python list

我有一个列表,其定义如下:

mean=[0,1,3,6,4,5,nan,456,nan,5,3,7,nan]

如何将所有具有nan的值替换为0。

2 个答案:

答案 0 :(得分:4)

假设" nan"真的是NaN,你不能使用普通的比较来找到它们,NaN不等于任何其他数字或NaN。是的,它不等于它自己。

因此,您必须使用math.isnan()进行检查:

mean2 = [0 if math.isnan(x) else x for x in mean]

答案 1 :(得分:1)

假设nan已经是一个已定义的变量,那么你可以这样做:

>>> nan="nan"
>>> mean=[0,1,3,6,4,5,nan,456,nan,5,3,7,nan]
>>> print([0 if i==nan else i for i in mean])
[0, 1, 3, 6, 4, 5, 0, 456, 0, 5, 3, 7, 0]

NaN引用Not a Number

>>> import math
>>> mean=[0,1,3,6,4,5,float("NaN"),456,float("NaN"),5,3,7,float("NaN")]
>>> print([0 if math.isnan(i) else i for i in mean])
[0, 1, 3, 6, 4, 5, 0, 456, 0, 5, 3, 7, 0]