我被一个相当简单的问题困住了:我需要在Mathematica中构建一个由两个不同列表的所有排列组合值组成的列表。假设,
a={1,2}
和 b={4,5}
,我需要的结果是:c={{1,4},{1,5},{2,4},{2,5}}
请问有人能给我一个实现这个的想法吗? 非常感谢, Philipp
a={1,2}
和 b={4,5}
,我需要的结果是:c={{1,4},{1,5},{2,4},{2,5}}
请问有人能给我一个实现这个的想法吗? 非常感谢, Philipp
这里是一种方式
In[2]:= Tuples[{{1, 2}, {4, 5}}]
Out[2]= {{1, 4}, {1, 5}, {2, 4}, {2, 5}}
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
可以节省一步。
Distribute[{a,b},List]
是另一种可能有用的选择。与Outer
不同,结果不是嵌套的,避免了使用Flatten
的需要。 - 681234