Multidimensional array 将二维数组转换为列表列表
是否有一种方法可以获取2D数组并获得列表列表。这似乎是一个简单的操作,但我找不到一个方法。 此代码显然不起作用: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 /
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] ]
]
toListListval-it:int-list-list=[[0;0;0;0];[0;0;0];[0;0;0];[0;0;0]]