如何根据Mathematica中其他列表的排列生成列表

时间:2011-02-22 14:52:48

标签: list wolfram-mathematica permutation

我遇到了一个相当简单的问题:我需要构建一个列表,其中列出了Mathematica中两个不同列表的值的所有排列。 比方说,a={1,2}b={4,5}我需要结果

c={{1,4},{1,5},{2,4},{2,5}}

有人可以告诉我如何实现这个目标吗? 非常感谢,

菲利普

2 个答案:

答案 0 :(得分:4)

这是一种方式

In[2]:= Tuples[{{1, 2}, {4, 5}}]

Out[2]= {{1, 4}, {1, 5}, {2, 4}, {2, 5}}

答案 1 :(得分:3)

内置Tuples功能正是您想要的:

In[1]:= a = {1, 2}; b = {4, 5};

In[2]:= c = Tuples[{a, b}]
Out[2]= {{1, 4}, {1, 5}, {2, 4}, {2, 5}}

您还可以使用Flatten和更一般的Outer

来完成此操作
In[3]:= Flatten[Outer[List, a, b], 1]
Out[3]= {{1, 4}, {1, 5}, {2, 4}, {2, 5}}

我提到这最后一个事实,因为很多时候我发现自己使用Tuples,我是在将Apply函数添加到每个生成的子列表之前的中间步骤,使用Outer可以为我节省一步。