通过索引方法在列表中查找浮点数并使用舍入错误(Python)

时间:2014-10-22 21:21:54

标签: python indexing rounding-error

通常情况下,当我们对浮点数进行操作时,我们得到的值会受到舍入错误的影响,例如1.000000000001,如果我想在列表中找到类似1.0的值,那么最干净的方法是什么? 我试图找到1.0的索引,所以要在y列表中找到相应的y值。我想过使用if语句,找到某个范围内的x值,比如1.0 +/- 0.0000000000001,I&# 39;我确定有更好的方法。谢谢大家。

xlist=[0,1.0000000000001,2.0.3.0]
ylist=[0.0,1.0,2.0,3.0]
def numberfinder(xlist=[],ylist=[]):
    return ylist[xlist.index(1.0)]

print numberfinder(xlist,ylist)

2 个答案:

答案 0 :(得分:1)

您应首先对两个列表进行舍入,如下所示:

xlist=[round(i,1) for i in xlist]
ylist=[round(i,1) for i in ylist]

现在xlist将成为:

[0.0, 1.0, 2.0, 3.0]

和1.0可以找到。

答案 1 :(得分:0)

如果您的列表具有相同的len,则使用zip和字典:

xlist=[0,1.0000000000001,2.0.3.0]
ylist=[0.0,1.0,2.0,3.0]
>>> zip_list=zip(xlist,ylist)
>>> d_list=dict(zip_list)
>>> d_list[1.0]
1.0000000000001