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]))
您可以过滤 y
或 w
以忽略 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 作为最小元素。
谁能告诉我为什么当 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]))
您可以过滤 y
或 w
以忽略 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 作为最小元素。