【发布时间】:2012-10-29 08:28:34
【问题描述】:
如何在 Python 浮点数列表中找到最小项的索引?如果它们是整数,我会这样做:
minIndex = myList.index(min(myList))
但是,对于浮点数列表,我会收到以下错误,我认为是因为浮点数相等比较相当不确定。
ValueError: 0.13417985135 is not in list
现在,我知道我可以简单地滚动列表并比较每个项目,看看它是否是 (min - 0.0000000000001),但这有点混乱。有没有更优雅(最好是内置)的方法来查找浮动列表中最小项的索引?
【问题讨论】:
-
这应该适用于整数和浮点数......你能告诉我们一个浮点数不起作用的具体例子吗?
-
浮点数的位数是有限的,所以比较不会有问题。
-
浮点比较不是不确定的。比较两个浮点数是否相等当且仅当数字相等时才返回真,在任何没有严重破坏的浮点实现中。一个潜在的问题是列表中的 NaN。在这种情况下,最小值运算符可以返回 NaN,但相等比较会报告 NaN 不等于任何值(包括它自己),这可能会导致例程返回最小值索引的问题。如果列表中没有 NaN,则表明还有一些其他问题尚未在任何答案中解决。
-
这个问题被标记为重复,但这比 imo 顶部横幅上链接的问题 ymmv 有更好的答案。
标签: python list floating-point minimum floating-point-precision