Mes deux listes contiennent des sous-listes

list1= [['+', '+', '-'], ['+', '-', '+'], ['-', '+'], ['+', '+', '+']]

list2= [['x1', 'x2', '2x3'], ['2x1', 'x2', 'x3'], ['x1', 'x3'], ['3x1', '2x2', '4x3']]

Comment puis-je concaténer la liste1 et la liste2 en fonction du même index et enregistrer le résultat dans une autre liste ?

Mon résultat souhaité serait:

list1 = [['+x1', '+x2', '-2x3'], ['+2x1', '-x2', '+x3'],['-x1', '+x3'],['+3x1', '+2x2', '+4x3']]

Jusqu'à présent, j'ai essayé de le faire pour une seule sous-liste, mais je n'ai pas eu de chance de conserver la sous-liste telle quelle

for pair in itertools.product(list1[0], list2[0]):
    matrix3_with_signs.append(''.join(pair))
3
pasok 10 mars 2019 à 17:11

2 réponses

Meilleure réponse

Vérifier avec

x=[[m+n for m,n in zip(x,y)]for x , y in zip(list1,list2)]
x
Out[135]: 
[['+x1', '+x2', '-2x3'],
 ['+2x1', '-x2', '+x3'],
 ['-x1', '+x3'],
 ['+3x1', '+2x2', '+4x3']]
4
BENY 10 mars 2019 à 14:17

Au lieu de la liste imbriquée, vous pouvez utiliser la fonction map() avec l'opérateur concat (ou add):

from operator import concat

[list(map(concat, i, j)) for i, j in zip(list1, list2)]
0
Mykola Zotko 10 mars 2019 à 16:08