2つのリストを組み合わせたいのですが。次の2つのリストがある場合:{a,b,c,d}
および{1,2,3,4}
取得するために何をする必要がありますか{{a,1}, {b,2}, {c,3}, {d,4}}
?
これが1つの方法です:
Transpose[{{a, b, c, d}, {1, 2, 3, 4}}]
難解なメソッドはFlatten
で、これは(Flattenのヘルプセクションから)「不規則な」配列の転置も許可します。
Flatten[ {{a, b, c, d}, {1, 2, 3, 4, 5}}, {{2}, {1}}]
Out [6] = {{a、1}、{b、2}、{c、3}、{d、4}、{5}}
考えられる解決策の1つは
MapThread[List,{{a,b,c,d},{1,2,3,4}}]
行列の列を持つリストがある場合:
l = Table[Subscript[g, Sequence[j, i]], {i, 5}, {j, 5}]
転置はあなたに行を与えるでしょう:
Transpose@l // MatrixForm
listA={a,b,c,d};
listB=[1,2,3,4};
table=Transpose@{# & @@@ listA, # & @@@ listB}
A、b、c、d自体もリストされている場合は、以下を使用します。
MapThread[Flatten[{#1[[All]],#2}]&,{l1,l2}]//TableForm
これは素晴らしい質問です。 Tableでこれを行うデフォルトの方法があると思って行き詰まりましたが、そうではありませんでした。以下の答えはかなり直感的であり、他の同様の状況に簡単に一般化することができます。
l1 = {a,b,c,d};
l2 = {1,2,3,4};
pairs = Table[{l1[[i]], l2[[i]]}, {i, 1, Length[l1]}]
MapThreadはこの種のことも行います。これは、ハワードのMapThreadソリューションほどエレガントではありませんが、ある意味で読みやすくなっています。 MapThreadのドキュメントをご覧ください。関数はインラインで定義されます(純粋関数):
pairs = MapThread[{#1, #2} &, {l1, l2}]