如何在列中格式化两个单独的列表,而不是Mathematica中的行?

时间:2011-02-11 13:11:34

标签: formatting wolfram-mathematica

这似乎应该是小菜一碟,但我没有在Mathematica的文档中找到答案。假设我有两个单独的列表,例如x = {1,2,3,4,5}和y = {1,4,9,16,25}。我想将这些列表格式化为一个表,每个列表都作为一列,如下所示:

x  y  
1  1  
2  4  
3  9  
4 16  
5 25  

但如果我做TableForm [x,y],我只得到第一列,如下所示:

1  
2  
3  
4  
5  

如果我做网格[{x,y}],我得到一个表,但格式化为行而不是列,如下所示:

1 2 3  4  5  
1 4 9 16 25   

现在,如果我的值为{x,y}对,而不是单独的列表,那么我可以得到几乎我想要的东西,如下所示:

Input: Table[{n,n^2},{n,1,5}]//TableForm

Output:   
1 1  
2 4  
3 9  
4 16  
5 25  

我说差不多,因为我想在每列的顶部都有变量名称,我希望这些列是对齐的,这样一些数字总是垂直放在“一个地方”,“十位”中的十位数等等。

所以,回到我的问题:如果我有两个相同长度的单独列表,我如何将它们格式化为列表?我检查了Grid和TableForm的MMA文档,但我找不到办法。我错过了什么?如果没有直接的方法,有没有办法将两个单独的列表转换为值对,然后可以使用TableForm在列中进行格式化?

感谢你提出的任何建议。

5 个答案:

答案 0 :(得分:7)

通常在Mathematica中,您使用Transpose来切换行和列的角色。

In[6]:= x = {1,2,3,4,5}; y = {1,4,9,16,25};

In[7]:= {x,y} // Transpose // TableForm

Out[7]//TableForm= 1   1

                   2   4

                   3   9

                   4   16

                   5   25

答案 1 :(得分:6)

我个人更喜欢Grid to TableForm。也许是这样的?

一些预赛:

x = {1, 2, 3, 4, 5};
y = {1, 4, 9, 16, 25};
grid = Transpose@{x, y};
headings = {{Item["x", Frame -> {True, True}], 
    Item["y", Frame -> {True, False}]}};

以下代码,

Grid[Join[headings, grid], Alignment -> Right, Dividers -> All, 
 Spacings -> {3, 1}, FrameStyle -> Orange]

将此作为输出,例如:

enter image description here

答案 2 :(得分:4)

您可以使用选项Transpose

,而不是使用TableDirection
x={1,2,3,4,5};y={1,4,9,16,25};
TableForm[{x,y},TableDirections->Row,TableHeadings->{{"x","y"}}]

a table without legs, but with a head

答案 3 :(得分:3)

 Grid[Transpose[{x, y}], Alignment -> Right]  

enter image description here

答案 4 :(得分:2)

我会用:

x = {1, 2, 3, 4, 5};
y = {1, 4, 9, 16, 25};

TableForm[{{x, y}}, TableAlignments -> Right]

enter image description here


以下是一些更复杂的例子,展示了TableForm的工作方式。它确实很复杂,我通常需要进行一些实验才能得到我想要的东西。

a = {1, 2, 3};
b = {4, 5, 6};

{a, b} // TableForm

enter image description here

{{a}, {b}} // TableForm

enter image description here

{{{a}}, {{b}}} // TableForm

enter image description here

{{{a}, {b}}} // TableForm

enter image description here

{{List /@ a, List /@ b}} // TableForm

enter image description here

{{a}, b} // TableForm

enter image description here

{{{a}, b}} // TableForm

enter image description here

{{{a}}, {b}} // TableForm

enter image description here

{{{{a}}, {b}}} // TableForm

enter image description here