2

次のリストがあります。

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}};

ネストされたテーブルを使用し、2 番目のネストされたリストの長さを計算することで、これを実現できます。

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

それはうまくいきますが、もっと簡単な方法はありますか?おそらく、Map/Thread/Apply の組み合わせでしょうか?

4

1 に答える 1

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

または、ウィザード氏がコメントで指摘しているように、もう少し単純です。

Flatten[Thread /@ lis, 1]
于 2013-08-12T17:44:02.220 に答える