且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

F#:使用键扩展形式的元组列表(字符串*字符串列表)

更新时间:2023-11-05 09:49:52

您可以在snd source上使用List.map:

let source = ("A", ["B"; "C"; "D"; "E"]);;

// val source : string * string list = ("A", ["B"; "C"; "D"; "E"])

let result = snd source |> List.map (fun x -> fst source, x);;

// val result : (string * string) list =
//    [("A", "B"); ("A", "C"); ("A", "D"); ("A", "E")]

更新

有关这些元素的列表

let source = [("A", ["B"; "C"; "D"; "E"]);("A", ["B"; "C"; "D"; "E"]);("A", ["B"; "C"; "D"; "E"])];;

// val source : (string * string list) list =
//   [("A", ["B"; "C"; "D"; "E"]); ("A", ["B"; "C"; "D"; "E"]);
//    ("A", ["B"; "C"; "D"; "E"])]

您可以使用上面的代码声明一个函数

you can declare a function with code from above

let collectTuple (x, items) = items |> List.map (fun y -> x, y);;

// val collectTuple : x:'a * items:'b list -> ('a * 'b) list

并使用它来调用List.map:

let result = source |> List.map collectTuple;;

// val result : (string * string) list list =
//   [[("A", "B"); ("A", "C"); ("A", "D"); ("A", "E")];
//    [("A", "B"); ("A", "C"); ("A", "D"); ("A", "E")];
//    [("A", "B"); ("A", "C"); ("A", "D"); ("A", "E")]]

List.collect(如果您只想要一个元组列表):

or List.collect if you want just one list of tuples instead:

let result = source |> List.collect collectTuple;;

// val result : (string * string) list =
//   [("A", "B"); ("A", "C"); ("A", "D"); ("A", "E"); ("A", "B"); ("A", "C");
//    ("A", "D"); ("A", "E"); ("A", "B"); ("A", "C"); ("A", "D"); ("A", "E")]