Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用List.map在int List上应用函数?_List_Map_Ocaml - Fatal编程技术网

如何使用List.map在int List上应用函数?

如何使用List.map在int List上应用函数?,list,map,ocaml,List,Map,Ocaml,假设我有一个(int list)x=[[1;1;1];[2;2];[3;4;5]和一个函数f。结果应该是[f[1;1;1];f[2;2];f[3;4;5]。内置的List.map仅适用于int List,而不适用于int List List。此新列中的第i个条目由函数f计算,该函数将电子表格中每列的第i个元素作为输入,并形成一个新元素 让newList x f=List.map f x(*这是我所知道的唯一一个map函数*)您可以使用List.map f作为一个函数,它在一维列表上工作,然后在二

假设我有一个
(int list)x=[[1;1;1];[2;2];[3;4;5]
和一个函数f。结果应该是
[f[1;1;1];f[2;2];f[3;4;5]。
内置的List.map仅适用于int List,而不适用于int List List。此新列中的第i个条目由函数f计算,该函数将电子表格中每列的第i个元素作为输入,并形成一个新元素


让newList x f=List.map f x
(*这是我所知道的唯一一个map函数*)

您可以使用
List.map f
作为一个函数,它在一维列表上工作,然后在二维列表上使用该函数,如下所示:

let x = [[1;1;1]; [2;2;2]; [3;4;5]];; 
let f x = x + 1;; 
List.map (List.map f) x;;
输出:

- : int list list = [[2; 2; 2]; [3; 3; 3]; [4; 5; 6]]
我的函数将接受两个参数作为输入,一个int list和一个 函数f。它将输出一个新的int列表。输入=m=[[x1;x2;x3]; [y1;y2;y3];[z1;z2;z3]]和函数f输出=[f[x1;y1;z1];f [x2;y2;z2];f[x3;y3;z3]]

似乎您想将()转换为二维数组,然后映射
f
。在这种情况下,您可以执行以下操作:

let rec transpose list = match list with
| []             -> []
| []   :: xss    -> transpose xss
| (x::xs) :: xss ->
    (x :: List.map List.hd xss) :: transpose (xs :: List.map List.tl xss);;

let myfunc m f = List.map f (transpose m);;

谢谢你的帮助。当对初始int列表中所有列的所有I-th元素调用f时,如何创建一个新列,其中新列的I-th元素将成为结果。对于新列的第三个元素,我们调用[1;2;5]上的函数f。因此,新专栏的完整结果将是[f[1;2;3];f[1;2;4];f[1;2;5]。我不确定你的确切意思。
f
的确切定义是什么?在你最初的问题f是
:int->int
,现在
f
是另一种类型吗?假设我得到一个int列表m=[[x1;x2;x3];[y1;y2;y3];[z1;z2;z3]]。我如何创建一个新的整数列表m'=[x1;y1;z1];[x2;y2;z2];[x3;y3;z3];然后使用list.map应用函数f来获得结果=[f[x1;y1;z1];f[x2;y2;z2];f[x3;y3;z3]?那么
f
的输入类型和输出类型是什么?如果
f2
整数列表作为输入,您只需执行以下操作:
List.map f2 x