Когда мы запускаем следующий цикл foor, он выводит одну и ту же пару раз (см. Далее ниже), хотя keepPairs содержит только различные кортежи. У кого-нибудь есть быстрое решение?
processedPairs = []
bestCorrPairs = []
corrCoefs = []
for pair in keptPairs:
if pair not in processedPairs:
processedPairs.append(pair)
bestCorrCoef = 0
targetx = pair[0]
t_y = []
for p in keptPairs:
if targetx in p:
if (p[0]!=targetx): t_y.append(p[0])
else: t_y.append(p[1])
else: continue
for targety in t_y:
corr = calcCorr(final_t,targetx, targety)
if (np.abs(corr) > np.abs(bestCorrCoef) and not (corr==0 or corr==1)):
bestCorrCoef = corr
bestPair = tuple([targetx, targety])
else: continue
bestCorrPairs.append(bestPair)
corrCoefs.append(bestCorrCoef)
else: continue
for i in range(0,len(bestCorrPairs)):
print(bestCorrPairs[i], ': ', corrCoefs[i])
из:
('9.4', '15.4') : 0.9906385237419475
('9.4', '15.4') : 0.9906385237419475
('9.4', '15.4') : 0.9906385237419475
('9.4', '15.4') : 0.9906385237419475
('9.4', '15.4') : 0.9906385237419475
('9.4', '15.4') : 0.9906385237419475
('9.4', '15.4') : 0.9906385237419475
('3.1', '15.1') : -0.9815967899407816
('3.1', '15.1') : -0.9815967899407816
('17.8', '6.2') : -0.9982604771744984
('6.2', '17.8') : -0.9982604771744984
('10.c', '7.2') : -0.8082515774139288
('17.3', '15.1') : 0.9810874111013809
etc.
Мы хотели бы обработать каждую пару только один раз. Печать пар после первого цикла for фактически печатает их только один раз, однако на выходе получается, что эти пары были обработаны несколько раз.
Спасибо!