2017-02-27 4 views
0

Ich versuche, keine Werte in 'd' einzufügen, die wiederholt werden, wenn ich sie an eine Liste angehängt habe. Ich möchte Werte, die ich wiederholt habe, nicht in die Tiefenliste aufnehmen. Was mache ich falsch?Warum ignoriert mein Code nicht Werte in einer Liste, die wiederholt werden?

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

wahrscheinlich Gleitkommagenauigkeit. –

+3

Sie testen "wenn nicht in der Tiefe", aber Sie fügen "d" niemals "Tiefe" hinzu. Du solltest 'depth.append (d)' machen. –

+0

@Hugh aber ich füge d zu Tiefe mit Spalten ['Tiefe'] hinzu und setze das dann auf Tiefe über – Adam

Antwort

0

Es ist wahrscheinlich, weil Sie ‚schweben‘ verwenden, während Tiefe eine andere Art ist. Statt

diese Zeile Versuchen:

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

Um klar zu sein, ist es nicht das Richtige zu tun ist. Versuchen Sie, den entsprechenden Typ von Anfang an zu verwenden.

0

Ich fand eine Lösung. Nicht sicher, ob es das einfachste ist, aber es funktioniert jetzt.

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

Es gibt keinen guten Grund, dass dies funktionieren sollte, aber der Code in der Frage nicht. Was erzählst du uns nicht? –

+2

Betrachte auch 'if 0.21 <= p <= 0.31 und -0.06 <= r <= 0.06 und 4 <= d <= 90 und d nicht in ...:'. Auf diese Weise haben Sie nur eine Ebene der Einrückung. –

+1

@ Elmex80s. Ich habe die Reihenfolge geändert, aber nicht den Sinn der Beziehungen –

Verwandte Themen