2015-07-12 54 views
1

我有以下列表:Python的 - 比較2個漂浮

[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中讀取時間的浮點值,如果「dt> 0.00694444444444444」我試圖找到大於10分鐘的值並將它們從列表中刪除。

+2

在遍歷它你不應該修改的列表。從一個新的空白列表開始,只複製你想要的項目。 –

+0

[this]的副本(http://stackoverflow.com/questions/4081217/how-to-modify-list-entries-during-for-loop)? –

回答

0

正如在評論中提到的那樣,當您迭代它時,您不應該修改列表。創建僅包含滿足你想要的標準元素的新列表很容易與列表理解:

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

這是一個非常非常糟糕的主意,一會兒內刪除的項目(或爲)。 最好製作一個新的列表!
nv_lst = []
爲DT在dtime_list:
如果DT < = 0.00694444444444444:
nv_lst.append(DT)
打印(nv_lst)