0

我有以下子列表

[[1;5;10];
 [2;6;11];
 [3;7;12]];

我正在尝试创建以下子列表列表:

[[1;2;3];
 [5;6;7];
 [10;11;12]]

结果的第一个子列表应包含每个原始子列表的第一个元素,第二个结果子列表应包含每个原始子列表的第二个元素,依此类推。

每个子列表包含与其他子列表相同数量的元素。子列表的数量至少为 2。

我正在考虑使用 List.map 但我不确定要对每个子列表应用什么函数来提取所需的元素。

这是我到目前为止所拥有的:

let rec compute list = 
   List.map (fun x -> ) list

任何建议表示赞赏!

4

1 回答 1

0

在这里,您需要两个递归(因为在命令式语言中您需要 2 个叠层循环)。第一次递归应该允许您遍历输入行,例如从 1 到 3,并且在此递归的每一步,您将需要第二次递归,以遍历整行。

您可以手动完成所有操作,也可以使用List.fold_left. (我会使用 fold 进行内部递归。

于 2018-11-19T13:07:28.843 回答