gpt4 book ai didi

list - 是否有比我所做的更像 OCaml 的方式来将元组列表转换为列表?

转载 作者:行者123 更新时间:2023-12-05 08:45:29 24 4
gpt4 key购买 nike

我的目标是将 (int * int) 列表 转换为 int 列表。这就是我所做的:

let tuples_list_to_list l =
let rec aux_tuples_to_list acc l =
match l with
| [] -> acc
| x :: tl -> aux_tuples_to_list (fst x :: snd x :: acc) tl in
aux_tuples_to_list [] l

我想知道是否有更“优雅”的方式来编写我的函数,尽管这是主观的或者至少是更好的方式。我正在考虑使用 List.mapList.fold_left 但我在弄清楚我可以使用这两个函数来做同样的事情时遇到了问题。基本上,我认为可以使用一行而不是我编写的整个函数。

你怎么看?谢谢

最佳答案

此任务适用于 List.concat_map(在其他一些语言中也称为“平面图”):

(* List.concat_map : ('a -> 'b list) -> 'a list -> 'b list *)

let tuples_list_to_list l =
List.concat_map (fun (x, y) -> [x; y]) l

您可以使用 List.fold_left,但是您必须在最后反转结果,因为列表是以相反的顺序构造的:

let tuples_list_to_list l = 
List.rev (List.fold_left (fun acc (x, y) -> y :: x :: acc) [] l)

关于list - 是否有比我所做的更像 OCaml 的方式来将元组列表转换为列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72557473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com