如何在Mathematica中从其他列表的排列生成一个列表

4
我被一个相当简单的问题困住了:我需要在Mathematica中构建一个由两个不同列表的所有排列组合值组成的列表。假设,a={1,2}b={4,5},我需要的结果是:
c={{1,4},{1,5},{2,4},{2,5}}

请问有人能给我一个实现这个的想法吗? 非常感谢, Philipp


欢迎来到stackoverflow。我们可以帮助您解决问题。您已经尝试过什么来解决这个问题了吗?您是否查看了Mathematica文档?也许您可以在这里找到答案:http://reference.wolfram.com/mathematica/guide/DiscreteMathematics.html - dbjohn
2个回答

4

这里是一种方式

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

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

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可以节省一步。


3
Distribute[{a,b},List]是另一种可能有用的选择。与Outer不同,结果不是嵌套的,避免了使用Flatten的需要。 - 681234

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接