Ich bin relativ neu bei Python, also werde ich mein Bestes geben, um zu erklären, was ich versuche zu tun. Ich versuche, durch zwei Listen von Sternen (die beide Record-Arrays enthalten) zu iterieren und versuche, Sterne durch ihre Koordinaten mit einer Toleranz (in diesem Fall Ra und Dec, die beide Indizes innerhalb der Record-Arrays sind) zu vergleichen. Es scheint jedoch mehrere Sterne aus einer Liste zu geben, die mit dem gleichen Stern in der anderen übereinstimmen. * Dies liegt daran, dass beide Sterne im Atoll übereinstimmen. Gibt es einen Weg dies zu verhindern? Hier ist, was ich bisher:Mehrere Übereinstimmungen in Listeniteration verhindern
from __future__ import print_function
import numpy as np
###importing data###
Astars = list()
for s in ApStars:###this is imported but not shown
Astars.append(s)
wStars = list()
data1 = np.genfromtxt('6819.txt', dtype=None, delimiter=',', names=True)
for star in data1:
wStars.append(star)
###beginning matching stars between the Astars and wStars###
list1 = list()
list2 = list()
for star,s in [(star,s) for star in wStars for s in Astars]:
if np.logical_and(np.isclose(s["RA"],star["RA"], atol=0.000277778)==True ,
np.isclose(s["DEC"],star["DEC"],atol=0.000277778)==True):
if star not in list1:
list1.append(star) #matched wStars
if s not in list2:
list2.append(s) #matched Astars
Ich kann die atol verringern, da sie über den Instrumentenfehler geht. Was passiert, ist folgendes: Es gibt mehrere Wstars, die zu einem Astar passen. Ich will nur einen Stern für einen Stern, wenn es möglich ist.
Irgendwelche Vorschläge?
Off-Topic, aber Ihre 'continue' Anweisungen tun nichts –
Können Sie Ihren Code klären/überarbeiten? Sie initialisieren 'list1' und' list2', aber beide sind leere Listen zum Zeitpunkt Ihrer 'for star, s ...' Schleife. –
Könnte meine Bearbeitung sein ... @Thomas_Grier, könnten Sie die 'continue'-Anweisungen an ihren richtigen Ort einrücken? (Der letzte 'continue' ist überflüssig, aber Sie wollen wahrscheinlich den ersten auf der gleichen Ebene wie die' if' Anweisungen.) – Alexander