gpt4 book ai didi

f# 将二维数组展平为一维数组

转载 作者:行者123 更新时间:2023-12-01 13:41:03 24 4
gpt4 key购买 nike

如何通过将每一行附加到上面的行来将二维数组展平为一维数组?

我的问题是不明白如何使用 map 来做到这一点,因为其他函数式语言有一个 flatmap/(在此处插入类似的名称)函数来做到这一点。

let colors = Array2D.init 800 480 (fun i j -> 
if i % 3 = 0 || j % 3 = 0 then Color.Black
else Color.Red)
let data = colors |> map (fun c -> c)

我将如何使用 map 以便将 map 的返回类型更改为一维数组?

最佳答案

对于序列使用 Seq.fold + Seq.append + empty Seq

let seq2d = seq {yield seq{1..3}; yield seq{4..6} }
seq2d |> Seq.fold Seq.append Seq.empty<int>
//[1; 2; 3; 4; 5; 6;]

甚至只用 Seq.reduce + Seq.append 少打字
seq2d |> Seq.reduce Seq.append
//[1; 2; 3; 4; 5; 6;]

对于列表(但不是序列),它是 List.reduce + List.append
let list2d = [ [1;2;3]; [4;5] ]
list2d |> List.reduce List.append
//[1; 2; 3; 4; 5]

关于f# 将二维数组展平为一维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40254694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com