Mathematica:用重复来展平嵌套列表

时间:2013-08-12 17:29:18

标签: wolfram-mathematica

我有以下列表:

lis={{1, {2}}, {3, {4, 5, 6}}, {7, {8, 9}}, {10, {11}}};

我想获得这个:

lis2={{1, 2}, {3, 4}, {3, 5}, {3, 6}, {7, 8}, {7, 9}, {10, 11}};

我可以使用嵌套表并计算第二个嵌套列表的长度来实现:

Flatten[Table[Table[{lis[[kk, 1]], lis[[kk, 2, ii]]}, {ii, 1, Length[lis[[kk, 2]]]}], {kk, 1, Length[lis]}], 1]

它有效,但是有更简单的方法吗?也许是Map / Thread / Apply的组合?

1 个答案:

答案 0 :(得分:3)

一种方式:

ArrayFlatten[Distribute[#, List] & /@ lis, 1]

=> {{1,2},{3,4},{3,5},{3,6},{7,8},{7,9},{10,11}}

修改

或者

ArrayFlatten[Thread /@ lis, 1]

修改2

或者稍微简单一点,Mr Wizard在评论中指出:

Flatten[Thread /@ lis, 1]