Как создать список из перестановок других списков в Mathematica - PullRequest
4 голосов
/ 22 февраля 2011

Я застрял с довольно простой проблемой: мне нужно построить список со всеми перестановками значений из двух разных списков в Mathematica. Допустим, a={1,2} и b={4,5} Мне нужен результат

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

Может, кто-нибудь подскажет, как этого добиться? Большое спасибо,

Philipp

Ответы [ 2 ]

4 голосов
/ 22 февраля 2011

Вот один из способов

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

Out[2]= {{1, 4}, {1, 5}, {2, 4}, {2, 5}}
3 голосов
/ 22 февраля 2011

Встроенная функция 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 может сэкономить мне шаг.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...