gpt4 book ai didi

list - 如何在 OCaml 中取两个列表的乘积?

转载 作者:行者123 更新时间:2023-12-02 20:50:13 25 4
gpt4 key购买 nike

我有两个列表:

let a = ["a";"b"];
let b = ["c";"d"];

我想要一个输出列表 c,例如:

c = ["a";"c";"a";"d";"b";"c";"b";"d"];

由于列表是不可变的,如何在 ocaml 中做到这一点?我是新手。

最佳答案

您将返回一个新列表。如果您确实对列表的笛卡尔积感兴趣,那么这应该足够了:

let cartesian l l' = 
List.concat (List.map (fun e -> List.map (fun e' -> (e,e')) l') l)

# cartesian ["a";"b"] ["c";"d"];;
- : (string * string) list = [("a", "c"); ("a", "d"); ("b", "c"); ("b", "d")]

如果您需要那种奇怪的平面结构,您可以使用额外的列表串联。

let flat_cartesian l l' = 
List.concat (List.concat (
List.map (fun e -> List.map (fun e' -> [e;e']) l') l))

关于list - 如何在 OCaml 中取两个列表的乘积?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10893521/

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