F#将Array2转换为列表

时间:2009-03-15 17:35:58

标签: list f#

我仍然是函数式编程的新手,所以如果我无法弄清楚如何做某些事情,我会回归到程序式。我找到了一种方法来转换到列表,但我仍然想知道如何。

这是我尝试将二维数组转换为列表。

let board = Array2.init 10 20 (fun i j -> pull(i, j))

let mutable pieces = []

board
|> Array2.mapi (fun i j a -> transform(i, j, a))
|> Array2.iter (fun a -> (pieces <- a :: pieces))

1 个答案:

答案 0 :(得分:8)

显然在.Net中,多维数组是IEnumerable(非泛型),因此可行:

let a2 = Array2.init 2 3 (fun x y -> (x+1)*(y+1))
let l = a2 |> Seq.cast<int> |> Seq.fold (fun l n -> n :: l) []
printfn "%A" l
编辑:正如Noldorin在评论中指出的那样,这甚至更好:

let l = a2 |> Seq.cast<int> |> Seq.toList