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