Python 每次我对浮动列表(具有nan值)进行排序时,都会得到不同的列表

Python 每次我对浮动列表(具有nan值)进行排序时,都会得到不同的列表,python,list,Python,List,我尝试在python中对浮点(和nan值)列表进行排序,如下所示: print max(list) list.sort() list.reverse() for i in range(100): print list[i] nan nan 2.0803176458 nan nan 23.1620761136 15.9680303803 15.3134388394 14.68055076 11.450492644 8.96268420227 8.15331554187 5.24420616

我尝试在python中对浮点(和nan值)列表进行排序,如下所示:

print max(list)
list.sort()
list.reverse()
for i in range(100):
    print list[i]
nan
nan
2.0803176458
nan
nan
23.1620761136
15.9680303803
15.3134388394
14.68055076
11.450492644
8.96268420227
8.15331554187
5.24420616524
3.9665322752
3.69758305442
1.08500491226
-0.227894225141
-0.254784399765
-0.866879940573
-1.21267324819
-2.21811678021
nan
nan
2.69325878444
当我运行它时,我最多会得到不同的值,并且当它打印出来时,我的列表没有排序(结果在上面的代码下面)


有人知道为什么会发生这种情况吗?

这是因为
nan
无法与任何其他对象(甚至自身)进行比较

>>> float('nan') < 3.14
False
>>> float('nan') > 3.14
False
>>> float('nan') < float('nan')
False
>>> float('nan') > float('nan')
False
>>> float('nan') == float('nan')
False
用于正确处理
nan

>>> import numpy as np
>>> arr = np.array(nums)
>>> np.sort(arr)
array([ -2.21811678,  -1.21267325,  -0.86687994,  -0.2547844 ,
        -0.22789423,   1.08500491,   2.08031765,   2.69325878,
         3.69758305,   3.96653228,   5.24420617,   8.15331554,
         8.9626842 ,  11.45049264,  14.68055076,  15.31343884,
        15.96803038,  23.16207611,          nan,          nan,
                nan,          nan,          nan,          nan])
>>> np.nanmax(arr)
23.162076113600001
>>> np.nanmin(arr)
-2.2181167802099999
阅读
>>> x = float('nan')
>>> y = x
>>> y == x
False
>>> import numpy as np
>>> arr = np.array(nums)
>>> np.sort(arr)
array([ -2.21811678,  -1.21267325,  -0.86687994,  -0.2547844 ,
        -0.22789423,   1.08500491,   2.08031765,   2.69325878,
         3.69758305,   3.96653228,   5.24420617,   8.15331554,
         8.9626842 ,  11.45049264,  14.68055076,  15.31343884,
        15.96803038,  23.16207611,          nan,          nan,
                nan,          nan,          nan,          nan])
>>> np.nanmax(arr)
23.162076113600001
>>> np.nanmin(arr)
-2.2181167802099999