मैं पाइथन के लिए अपेक्षाकृत नया हूं, इसलिए मैं यह समझाने के लिए अपनी पूरी कोशिश करूंगा कि मैं क्या करने की कोशिश कर रहा हूं। मैं सितारों की दो सूचियों (जिसमें दोनों रिकॉर्ड एरे होते हैं) के माध्यम से पुनरावृत्ति करने की कोशिश कर रहे हैं, सहिष्णुता के साथ अपने निर्देशांक द्वारा सितारों से मिलान करने की कोशिश कर रहे हैं (इस मामले में रा और दिसंबर, जो रिकॉर्ड एरे के अंदर दोनों सूचकांक हैं)। हालांकि, एक सूची से कई सितारे दिखाई देते हैं जो दूसरे में एक ही स्टार से मेल खाते हैं। * यह एटोल के भीतर मिलान करने वाले दोनों सितारों के कारण है। क्या इसको रोकने के लिए कोई रास्ता है? यहां मेरे पास अब तक है:सूची पुनरावृत्ति में एकाधिक मैचों को रोकना
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
मैं एटोल को कम नहीं कर सकता क्योंकि यह वाद्य यंत्र से परे है। यह क्या होता है: एक एस्टार से मेल खाने वाले कई Wstars हैं। यदि यह संभव है तो मैं सिर्फ एक स्टार के लिए एक सितारा चाहता हूं।
कोई सुझाव?
ऑफ-विषय लेकिन आपके 'जारी रखें' कथन कुछ भी नहीं करते –
क्या आप अपना कोड स्पष्ट/संशोधित कर सकते हैं? आप 'list1' और' list2' प्रारंभ कर रहे हैं लेकिन इनमें से दोनों स्टार के लिए आपके '' लूप के समय खाली सूचियां हैं। –
मेरा संपादन हो सकता था ... @ थॉमस_गियर, क्या आप 'जारी रखें' कथन को उनके सही स्थान पर इंडेंट कर सकते हैं? (अंतिम 'जारी रखें' अनावश्यक है, लेकिन संभवतः आप 'if' कथन के समान स्तर पर पहले व्यक्ति को चाहते हैं। – Alexander