Python - 具有 NaN 值的列表的 min() max()

Python - min() max() of list with NaN values

谁能告诉我为什么当 NaN 是列表的第一个元素时使用 min(list) 在列表中查找最小值不起作用?使用 max(list)

时也是如此
import math

y = [float('nan'),1,2,3,0,float('nan'),6,7,8,9]
print(y)
print(math.isnan(y[0]))
print(min(y))


w = [10,1,2,3,0,float('nan'),6,7,8,9]
print(w)
print(min(w))
print(math.isnan(w[5]))

您可以过滤 yw 以忽略 nan:

print(min(i for i in y if not math.isnan(i)))
# 0

nan 与数字执行的任何比较操作将 return False.

print(y[1] > y[0])
print(y[1] < y[0])

结果

False
False

如果内置函数在比较元素时遵循相同的逻辑,则上述行为很容易解释。如果选择第一个元素作为最小元素,则之后的任何比较都将为 False,因此 returning nan 作为最小元素。