J'aimerais combiner les deux listes. Si j'ai les deux listes ci-dessous: {a,b,c,d} et {1,2,3,4} que dois-je faire pour que je sois {{a,1}, {b,2}, {c,3}, {d,4}}?
Ésotérique méthode est Flatten, qui (à partir de la Section d'Aide sur les Aplatir) vous permet aussi de Transposer d'une irrégulière tableau.
Flatten[{{a, b, c, d},{1,2,3,4,5}},{{2},{1}}]
Out[6]= {{a, 1}, {b, 2}, {c, 3}, {d, 4}, {5}}
+1, je n'avais aucune idée que Flatten ne pourrait le faire.
oui, j'ai écrit ma propre fonction pour le faire, seulement pour trouver plus tard, il a été là tout le long.
Thread[List[{a, b, c, d}, {1, 2, 3, 4}]] n'a pas été mentionné
Je vais garder ma réponse avec le transpose option, parce que c'est exactement ce que je voulais dans mon cas. Ceci, toutefois, est plus générale de la solution, ce qui est clairement gagne un +1
+1 Même ici. Ne savais pas que cela a été ajouté à Flatten. Est-ce moi ou est la description (Flatten[list,{{s11,s12,...},{s21,s22,...},...}] flattens list by combining all levels sij to make each level i in the result.) à peu près incompréhensible? Il m'a fallu plusieurs minutes d'intense regarder avant de compréhension commencé à s'infiltrer.
b, c, d}, {1, 2, 3, 4}],2] n'a pas été mentionné que ce soit 😉
C'est un pur génie. Je m'incline devant vous et pour vous dans mon esprit comme le Roi Jobsecurity I.
Vous l'aimez? Je me demande si un Mathematica d'obfuscation de code " ne relèvent pas du domaine de StackExchange. Je m'attends à être révélé comme un amateur si nous en avons un.
C'est une grande question. J'avais coincé pensant qu'il y avait un défaut de le faire avec Table, mais pas tellement. Les réponses ci-dessous sont assez intuitif, et peut facilement être généralisé à d'autres situations similaires.
MapThread fait ce genre de chose aussi. C'est moins élégant que Howard MapThread solution, mais aussi plus lisible en un certain sens. Regardez MapThread docs. La fonction est définie en ligne (pure fonction):
En voici une:
Ésotérique méthode est
Flatten
, qui (à partir de la Section d'Aide sur les Aplatir) vous permet aussi de Transposer d'une irrégulière tableau.Out[6]= {{a, 1}, {b, 2}, {c, 3}, {d, 4}, {5}}
Flatten
ne pourrait le faire.Thread[List[{a, b, c, d}, {1, 2, 3, 4}]]
n'a pas été mentionnétranspose
option, parce que c'est exactement ce que je voulais dans mon cas. Ceci, toutefois, est plus générale de la solution, ce qui est clairement gagne un +1Flatten
. Est-ce moi ou est la description (Flatten[list,{{s11,s12,...},{s21,s22,...},...}] flattens list by combining all levels sij to make each level i in the result.
) à peu près incompréhensible? Il m'a fallu plusieurs minutes d'intense regarder avant de compréhension commencé à s'infiltrer.Tr[Table[{i, j}, {i, Symbol /@ CharacterRange @@ Reverse@Characters["da"]}, {j, Array[Binomial, {#, #}][[;; #, 1]] &[4]}], {##} &, 2]
😀Une solution possible est
MapThread
) est souvent plus efficace queApply
aprèsTranspose
.Si vous avez des listes avec les colonnes d'une matrice:
Transposer va vous donner les lignes:
Dans le cas où a, b, c, d sont également eux-mêmes la liste, utilisez la commande suivante:
MapThread[Flatten[{#1[[All]],#2}]&,{l1,l2}]//TableForm
C'est une grande question. J'avais coincé pensant qu'il y avait un défaut de le faire avec Table, mais pas tellement. Les réponses ci-dessous sont assez intuitif, et peut facilement être généralisé à d'autres situations similaires.
MapThread fait ce genre de chose aussi. C'est moins élégant que Howard MapThread solution, mais aussi plus lisible en un certain sens. Regardez MapThread docs. La fonction est définie en ligne (pure fonction):