F# 在F中将int[,]转换为int[][]的简单方法#

F# 在F中将int[,]转换为int[][]的简单方法#,f#,F#,我们有两个数组 let a = [| [|1|] |] 及 第一个返回int[],第二个返回int[,] 有没有一种简单的方法可以将int[,]转换为int[][] 没有内置函数来执行此操作。我会使用列表理解语法,这看起来很简单: let a = [| for i in 0..(Array2D.length1 a' - 1) -> [| for j in 0..(Array2D.length2 a' - 1) -> a'.[i,j] |] |] 需要注意的

我们有两个数组

let a = [| [|1|] |]

第一个返回int[],第二个返回int[,]


有没有一种简单的方法可以将int[,]转换为int[][]

没有内置函数来执行此操作。我会使用列表理解语法,这看起来很简单:

let a =
   [| for i in 0..(Array2D.length1 a' - 1) ->
         [| for j in 0..(Array2D.length2 a' - 1) -> a'.[i,j] |] |]

需要注意的一点是基本索引。在您的示例中,数组是基于零的,所以我使用零只是为了缩短代码。但如果需要支持非零基数组的情况,则必须执行
a.[i+Array2D.base1a',j+Array2D.base2a']
。不太优雅,但是watchagonnado。

如果您感兴趣的是数组的构建,那么您可以使用两个
数组来构建
[[]
(又称锯齿数组)。init

e、 g

Array.init 10(fun r->Array.init 20(fun c->(c+r)))

;
[|1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; 19; 20|];

[|2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21 |]

这几乎是正确的答案,在数组2d中加上两个-1。长度s,你是正确的。因为这是我得到的索引异常。谢谢你的回答。很好的回答。对不起,我在用手机写信,无法验证代码。
let a =
   [| for i in 0..(Array2D.length1 a' - 1) ->
         [| for j in 0..(Array2D.length2 a' - 1) -> a'.[i,j] |] |]