我有以下列表:
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的组合?
答案 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]