list - F# 将 Array2 转换为列表

标签 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))

最佳答案

显然在 .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

编辑:正如诺多林在评论中指出的那样,这更好:
let l = a2 |> Seq.cast<int> |> Seq.toList

关于list - F# 将 Array2 转换为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/648193/

相关文章:

python - 列表列表,将所有字符串转换为int,Python 3

list - 方案相当于元组拆包是什么?

list - 使用递归将原子列表转换为单个列表

python - 删除列表的不同方法

azure - 为什么 Microsoft Identity Web API 中间件拒绝对访问 token 进行身份验证?

.net - 表示数学区间的类型

python - 从文件列表中去除标点符号

f# - 列表中的for循环

f# - 简洁地创建一个 IDictionary<_,obj>

F# SqlDataConnection TypeProvider 不适用于 Sql Server Ce