gpt4 book ai didi

f# - 在F#中枢转或压缩seq >

转载 作者:行者123 更新时间:2023-12-04 19:13:26 27 4
gpt4 key购买 nike

假设我有一个序列序列,例如

{1, 2, 3}, {1, 2, 3}, {1, 2, 3}

枢转或压缩此序列的最佳方法是什么,所以我却有了,
{1, 1, 1}, {2, 2, 2}, {3, 3, 3}

有没有一种可理解的方法,而无需依靠对底层 IEnumerator<_>类型的操作呢?

为了澄清起见,这些是 seq<seq<int>>对象。每个序列(内部和外部)都可以具有任意数量的项目。

最佳答案

如果您要使用语义上为Seq的解决方案,则必须一直保持懒惰。

let zip seq = seq
|> Seq.collect(fun s -> s |> Seq.mapi(fun i e -> (i, e))) //wrap with index
|> Seq.groupBy(fst) //group by index
|> Seq.map(fun (i, s) -> s |> Seq.map snd) //unwrap

测试:
let seq =  Enumerable.Repeat((seq [1; 2; 3]), 3) //don't want to while(true) yield. bleh.
printfn "%A" (zip seq)

输出:
seq [seq [1; 1; 1]; seq [2; 2; 2]; seq [3; 3; 3]]

关于f# - 在F#中枢转或压缩seq <seq <'a >>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12766552/

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