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

Formatting 在Mathematica中,如何将两个单独的列表格式化为列而不是行?,formatting,wolfram-mathematica,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 1 2 3 4 5 1 2 3 4 5 1 4 9 16 25 但是如果我使用TableForm[x,y],我只得到第一列,如下所示: x y 1 1

这似乎是小菜一碟,但我还没有在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  
1  
2  
3  
4  
5  
1 2 3  4  5  
1 4 9 16 25   
但是如果我使用TableForm[x,y],我只得到第一列,如下所示:

x  y  
1  1  
2  4  
3  9  
4 16  
5 25  
1  
2  
3  
4  
5  
1 2 3  4  5  
1 4 9 16 25   
如果我使用网格[{x,y}],我会得到一个表,但格式是行而不是列,如下所示:

x  y  
1  1  
2  4  
3  9  
4 16  
5 25  
1  
2  
3  
4  
5  
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  
我说差不多,因为我希望在每一列的顶部都有变量名,并且我希望列对正,以便一位数始终垂直放置在“一”位,十位数始终垂直放置在“十”位,等等

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


感谢您的建议。

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

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

就我个人而言,我更喜欢网格而不是表格。也许是这样的

一些预备工作:

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]
将其作为输出,例如:


您可以使用选项
TableDirection
,而不是使用
转置:

x={1,2,3,4,5};y={1,4,9,16,25};
TableForm[{x,y},TableDirections->Row,TableHeadings->{{"x","y"}}]
我会使用:

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

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


下面是一些更复杂的示例,演示了TableForm的工作方式。它确实很复杂,我通常需要做一些实验才能得到我想要的

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

{a, b} // TableForm


请允许我欢迎您来到StackOverflow,并提醒我们在这里通常会做的三件事:1)当您收到帮助时,尝试也给予帮助,回答您专业领域的问题2)3)当您看到好的问答时,请投票支持,因为系统的可信度是基于用户通过分享知识而获得的声誉。还记得接受能更好地解决你的问题的答案,如果有的话,但是你应该选择一个答案,这是一项需要多次解释你选择的任务。阅读常见问题解答。如果你不选择一个答案,你就意味着没有一个答案能满足你的需要。@belisarius,我刚才错过了你最后的评论。我已经(迟了!)选择了一个“最佳”答案。尽管如此,我还是鼓励正在学习Mathematica的读者看看其他一些答案,因为每一个答案都会增加您对网格和表格工作原理的理解。谢谢Simon。我甚至没有意识到桌面方向选项。太好了!我能够按如下方式正确对齐:TableForm[{{x,y}},TableAlignments->right]。问:为什么添加一对额外的括号会将输出从行切换到列?@belisarius我想我没有理解这个要求@eipi10,TableForm在数据的每个级别翻转方向。编辑我的帖子以添加示例是否合适?我对stackoverflow比较陌生,不确定网站礼仪,但我当然希望看到您的示例。@eipi10示例已经发布了。如果其中任何一个太令人困惑,我将尽力解释为什么它会这样做。@鼓励编辑您的答案以提供更好的理解和/或更正。
{{{a}, b}} // TableForm
{{{a}}, {b}} // TableForm
{{{{a}}, {b}}} // TableForm