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

eip*_*i10 5 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  
Run Code Online (Sandbox Code Playgroud)

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

1  
2  
3  
4  
5  
Run Code Online (Sandbox Code Playgroud)

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

1 2 3  4  5  
1 4 9 16 25   
Run Code Online (Sandbox Code Playgroud)

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

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

Output:   
1 1  
2 4  
3 9  
4 16  
5 25  
Run Code Online (Sandbox Code Playgroud)

差点说,因为我想在每列的顶部都有变量名称,并且我希望这些列是对齐的,这样一些数字总是垂直放置在"一个地方",十位数字在"十位"等

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

感谢您提出的任何建议.

ken*_*ytm 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
Run Code Online (Sandbox Code Playgroud)


tom*_*omd 6

我个人更喜欢Grid到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}]}};
Run Code Online (Sandbox Code Playgroud)

以下代码,

Grid[Join[headings, grid], Alignment -> Right, Dividers -> All, 
 Spacings -> {3, 1}, FrameStyle -> Orange]
Run Code Online (Sandbox Code Playgroud)

将此作为输出,例如:

在此输入图像描述