Python - 比较2个浮点数

时间:2015-07-12 10:01:24

标签: python compare

我有以下列表:

[0.12458333333051996, 0.7976157407465507, 0.4842939814843703, 0.9736921296280343, 0.4590740740750334, 0.48178240740526235, 0.46826388888439396, 0.0013078703705105, 0.4625000000014552, 0.4758796296300716, 0.4797685185185401, 6.87130787037313, 0.49761574074364034, 2.9876041666648234, 0.4683564814768033, 0.45549768517958, 0.43494212962832535, 2.030381944445253, 0.48494212963123573, 0.817592592597066]

我在上面的列表中运行此代码:

for dt in dtime_list:
    if dt > 0.00694444444444444:
        dtime_list.remove(dt)

print(dtime_list)

输出:

==>[0.7976157407465507, 0.9736921296280343, 0.48178240740526235, 0.0013078703705105, 0.4758796296300716, 6.87130787037313, 2.9876041666648234, 0.45549768517958, 2.030381944445253, 0.817592592597066]

我原本预计不会有超过0.00694444444444444的浮动。为什么会发生这种情况?我该如何解决?

我的数组实际上是从excel读取的浮点值的时间,if" dt> 0.00694444444444444"我试图找到大于10分钟的值并将其从列表中删除。

2 个答案:

答案 0 :(得分:0)

如评论中所述,您不应在迭代时修改列表。通过列表理解,创建一个仅包含满足所需标准的元素的新列表很容易:

cutoff = 0.00694444444444444
filtered_list = [ dt for dt in dtime_list if dt <= cutoff ]

答案 1 :(得分:0)

在一段时间内(或for)删除项目是一个非常糟糕的主意。 最好列出新名单!
    nv_lst = []
    对于dt_list中的dt:
        如果dt&lt; = 0.00694444444444444:
            nv_lst.append(DT)
    print(nv_lst)