2017-10-06 2 views
1

J'essaie de trouver un moyen de combiner deux listes, puis de résumer la liste combinée d'une manière spécifique. La somme des 2 éléments précédents doit être additionnée à l'élément suivant. Ex: la somme de la première combinaison, ((1, 2), (4,)), devrait être (3,7,6), car 1 + 2 = 3, 3 + 4 = 7, 2 + 4 = 6.(python) Comment puis-je résumer tous les résultats d'une combinaison d'une manière spécifique?

Et ensuite être imprimé côte à côte: ((1, 2), (4,)) (3,7,6) SI il (la combinaison et sa somme) ne contiennent pas un certain élément (en quelque sorte alredy inséré).

Voici mon code et mes exemples:

a=[1,2,3] 
b=[4,5,6] 

import itertools 

sets = [a,b]; 
ks = [2, 1,] 

combinations = itertools.product(*[itertools.combinations(set, k) for set, k in zip(sets, ks)]) 

for combination in combinations: 
    print (combination) 

Répondre

1

droite-avant:

for i in itertools.product(*[itertools.combinations(set, k) for set, k in zip(sets, ks)]): 
    i_sum = i[0][0] + i[0][1] 
    print(i, (i_sum, i_sum + i[1][0], i[0][1] + i[1][0])) 

La sortie:

((1, 2), (4,)) (3, 7, 6) 
((1, 2), (5,)) (3, 8, 7) 
((1, 2), (6,)) (3, 9, 8) 
((1, 3), (4,)) (4, 8, 7) 
((1, 3), (5,)) (4, 9, 8) 
((1, 3), (6,)) (4, 10, 9) 
((2, 3), (4,)) (5, 9, 7) 
((2, 3), (5,)) (5, 10, 8) 
((2, 3), (6,)) (5, 11, 9) 
+0

@JoaoBatista, vous êtes les bienvenus – RomanPerekhrest