我想结合两个列表。如果我有以下两个列表:{a,b,c,d}
和{1,2,3,4}
我需要做什么才能获得{{a,1}, {b,2}, {c,3}, {d,4}}
?
答案 0 :(得分:35)
这是一种方式:
Transpose[{{a, b, c, d}, {1, 2, 3, 4}}]
答案 1 :(得分:17)
一种深奥的方法是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}}
答案 2 :(得分:11)
一种可能的解决方案是
MapThread[List,{{a,b,c,d},{1,2,3,4}}]
答案 3 :(得分:2)
如果列表中包含矩阵列:
l = Table[Subscript[g, Sequence[j, i]], {i, 5}, {j, 5}]
转置将为您提供行:
Transpose@l // MatrixForm
答案 4 :(得分:1)
listA={a,b,c,d};
listB=[1,2,3,4};
table=Transpose@{# & @@@ listA, # & @@@ listB}
答案 5 :(得分:1)
如果a,b,c,d本身也是列表,请使用以下内容:
MapThread[Flatten[{#1[[All]],#2}]&,{l1,l2}]//TableForm
答案 6 :(得分:0)
这是一个很好的问题。我已经开始认为有一种默认的方法来使用Table,但不是这样。下面的答案非常直观,可以很容易地推广到其他类似的情况。
<table>
MapThread也做了这样的事情。这不像Howard的MapThread解决方案那么优雅,但在某种意义上也更具可读性。看看MapThread文档。该函数是内联定义的(纯函数):
l1 = {a,b,c,d};
l2 = {1,2,3,4};
pairs = Table[{l1[[i]], l2[[i]]}, {i, 1, Length[l1]}]