我遇到了一个相当简单的问题:我需要构建一个列表,其中列出了Mathematica中两个不同列表的值的所有排列。
比方说,a={1,2}
和b={4,5}
我需要结果
c={{1,4},{1,5},{2,4},{2,5}}
有人可以告诉我如何实现这个目标吗? 非常感谢,
菲利普
答案 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
可以为我节省一步。