2017-02-27 36 views
0

我試圖在'd'中不包含值,並將它們附加到列表中時重複。我不想包含我在深度列表中重複的值。我究竟做錯了什麼?爲什麼我的代碼不能忽略重複列表中的值?

depth = columns['i_depth'] 

for row in reader: 
    r = float(row['roll']) 
    p = float(row['pitch']) 
    d = float(row['i_depth']) 
    if 0.21 <= p <= 0.31: 
      if -0.06 <= r <= 0.06: 
       if 90 >= d >= 4: 
        if d not in depth: # this is the code I added to remove repeats 
         columns['i_depth'].append(row['i_depth']) 
         columns['irrad2'].append(row['sci_ocr504i_irrad2']) 
         columns['lon'].append(row['lon']) 
         columns['lat'].append(row['lat']) 
+3

可能是浮點精度。 –

+3

您測試'如果深度不深',但是您從未將'd'加入深度。你應該做'depth.append(d)'。 –

+0

@Hugh,但我添加深度與列['深度'],然後將其設置爲 – Adam

回答

0

這可能是因爲您使用'浮動',而深度是另一種類型。

試試這個行:

if d not in [float(i) for i in depth]: 

需要明確的是,它不應該做的事情。嘗試從一開始就使用適當的類型。

0

我想出了一個解決方案。不知道它是否最簡單,但它現在起作用。

depth = columns['i_depth'] 
temp = [] # added this 
for row in reader: 
    r = float(row['roll']) 
    p = float(row['pitch']) 
    d = float(row['i_depth']) 
    if 0.21 <= p <= 0.31: 
      if -0.06 <= r <= 0.06: 
       if 90 >= d >= 4: 
        if d not in temp: 
         temp.append(d) # added this 
         columns['i_depth'].append(row['i_depth']) 
         columns['irrad2'].append(row['sci_ocr504i_irrad2']) 
         columns['lon'].append(row['lon']) 
         columns['lat'].append(row['lat']) 
+0

沒有理由認爲這應該可行,但問題中的代碼沒有。你沒有告訴我們什麼? –

+2

另外,如果0.21 <= p <= 0.31和-0.06 <= r <= 0.06且4 <= d <= 90並且不在...中:這樣你只有一個縮進級別。 –

+1

@ Elmex80s。我改變了順序,但沒有關係的感覺 –

相關問題