说我有100个元素的序列.每10个元素我想要一个前10个元素的新列表.在这种情况下,我将得到10个子列表的列表.
Seq.take(10)看起来很有希望,我怎样才能反复调用它来返回列表清单?
anv*_*ish 14
现在有Seq.chunkBySize:
[1;2;3;4;5] |> Seq.chunkBySize 2 = seq [[|1; 2|]; [|3; 4|]; [|5|]]
Run Code Online (Sandbox Code Playgroud)
这不错:
let splitEach n s =
seq {
let r = ResizeArray<_>()
for x in s do
r.Add(x)
if r.Count = n then
yield r.ToArray()
r.Clear()
if r.Count <> 0 then
yield r.ToArray()
}
let s = splitEach 5 [1..17]
for a in s do
printfn "%A" a
(*
[|1; 2; 3; 4; 5|]
[|6; 7; 8; 9; 10|]
[|11; 12; 13; 14; 15|]
[|16; 17|]
*)
Run Code Online (Sandbox Code Playgroud)