J'aimerais combiner deux listes. Si j'ai les deux listes suivantes: {a,b,c,d}
et {1,2,3,4}
, que dois-je faire pour obtenir {{a,1}, {b,2}, {c,3}, {d,4}}
?
Voici un moyen:
Transpose[{{a, b, c, d}, {1, 2, 3, 4}}]
Une méthode ésotérique est Flatten
, qui (à partir de la section d'aide sur Aplatir) permet également la transposition d'un tableau 'en lambeaux'.
Flatten[ {{a, b, c, d}, {1, 2, 3, 4, 5}}, {{2}, {1}}]
Out [6] = {{a, 1}, {b, 2}, {c, 3}, {d, 4}, {5}}
Une solution possible est
MapThread[List,{{a,b,c,d},{1,2,3,4}}]
Si vous avez des listes avec les colonnes d'une matrice:
l = Table[Subscript[g, Sequence[j, i]], {i, 5}, {j, 5}]
Transposer vous donnera les lignes:
Transpose@l // MatrixForm
listA={a,b,c,d};
listB=[1,2,3,4};
table=Transpose@{# & @@@ listA, # & @@@ listB}
Dans le cas où a, b, c, d sont eux-mêmes une liste, utilisez ce qui suit:
MapThread[Flatten[{#1[[All]],#2}]&,{l1,l2}]//TableForm
C'est une excellente question. J'étais coincé en pensant qu'il y avait un moyen par défaut de faire cela avec Table, mais ce n'est pas le cas. Les réponses ci-dessous sont assez intuitives et peuvent être facilement généralisées à d'autres situations similaires.
l1 = {a,b,c,d};
l2 = {1,2,3,4};
pairs = Table[{l1[[i]], l2[[i]]}, {i, 1, Length[l1]}]
MapThread fait ce genre de chose aussi. C’est moins élégant que la solution MapThread de Howard, mais aussi plus lisible dans un certain sens. Regardez les documents MapThread. La fonction est définie inline (fonction pure):
pairs = MapThread[{#1, #2} &, {l1, l2}]