gpt4 book ai didi

f# - 获取序列的每个第 n 个元素

转载 作者:行者123 更新时间:2023-12-04 10:02:11 26 4
gpt4 key购买 nike

我正在寻找一种方法来创建由另一个序列的每个第 n 个元素组成的序列,但似乎没有找到一种优雅的方法来做到这一点。我当然可以破解一些东西,但我想知道是否有我没有看到的库函数。

名称以 -i 结尾的序列函数对于确定元素是第 n 个或第 (n) 个元素的时间似乎非常有用,但我只能看到 iterimapi ,没有一个真正适合这项任务。

例子:

let someseq = [1;2;3;4;5;6]
let partial = Seq.magicfunction 3 someseq

然后 partial应该是 [3;6] .那里有类似的东西吗?

编辑:

如果我不是那么雄心勃勃并且允许 n要保持不变/已知,那么我刚刚发现以下应该有效:
let rec thirds lst =
match lst with
| _::_::x::t -> x::thirds t // corrected after Tomas' comment
| _ -> []

有没有办法把这个写得更短?

最佳答案

Seq.choose在这些情况下效果很好,因为它允许您执行 filtermapi 内工作 lambda 。

let everyNth n elements =
elements
|> Seq.mapi (fun i e -> if i % n = n - 1 then Some(e) else None)
|> Seq.choose id

类似于 here .

关于f# - 获取序列的每个第 n 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4676529/

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