Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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
Multidimensional array 将二维数组转换为列表列表_Multidimensional Array_F# - Fatal编程技术网

Multidimensional array 将二维数组转换为列表列表

Multidimensional array 将二维数组转换为列表列表,multidimensional-array,f#,Multidimensional Array,F#,是否有一种方法可以获取2D数组并获得列表列表。这似乎是一个简单的操作,但我找不到一个方法。 此代码显然不起作用: let arr = Array2D.create 4 4 0 let listOfLists = arr |> List.ofArray Array2D(多维数组)和锯齿数组(数组数组数组)是两种不同的类型。您可以从类型签名中看到它: let arr = Array2D.create 4 4 0 // int[,] let arrJagged = toJagged arr /

是否有一种方法可以获取2D数组并获得列表列表。这似乎是一个简单的操作,但我找不到一个方法。 此代码显然不起作用:

let arr = Array2D.create 4 4 0
let listOfLists = arr |> List.ofArray
Array2D
(多维数组)和锯齿数组(数组数组数组)是两种不同的类型。您可以从类型签名中看到它:

let arr = Array2D.create 4 4 0 // int[,]
let arrJagged = toJagged arr // int [][]
如果您需要多维数组,我建议您坚持使用它或使用专门构建矩阵库(如math.net)。F#中的
列表
是一个单链接的不可变列表,具有一些好的(易于创建和递归)和不太好的(性能)属性。顺便说一句,这里没有2D列表(在扩展的核心库中可能有一些合适的数据结构)

但您可以轻松地将2D数组转换为数组列表或列表列表,这相当于锯齿数组。这是一条单行线:

[对于0..3中的i->arr.[*,i]|>Array.toList]

val-it:int-list-list=[[0;0;0;0];[0;0;0];[0;0;0]; [0;0;0;0]]

或者更一般一点:

let toListList arr = 
    [for x in 0 .. Array2D.length1 arr - 1 ->
        [ for y in 0 .. Array2D.length2 arr - 1 -> arr.[x, y] ]
    ]
toListList
val-it:int-list-list=[[0;0;0;0];[0;0;0];[0;0;0];[0;0;0]]