如何在 Haskell 中获取无限列表的每个第 N 个元素? [英] How to get every Nth element of an infinite list in Haskell?
本文介绍了如何在 Haskell 中获取无限列表的每个第 N 个元素?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
更具体地说,如何从现有的无限列表中生成每个第 N 个元素的新列表?
More specifically, how do I generate a new list of every Nth element from an existing infinite list?
例如如果列表是 [5, 3, 0, 1, 8, 0, 3, 4, 0, 93, 211, 0 ...]
然后获取每个第三个元素将导致此列表 <代码>[0,0,0,0,0 ...]
E.g. if the list is [5, 3, 0, 1, 8, 0, 3, 4, 0, 93, 211, 0 ...]
then getting every 3rd element would result in this list [0,0,0,0,0 ...]
推荐答案
我使用 drop 的版本:
My version using drop:
every n xs = case drop (n-1) xs of
y : ys -> y : every n ys
[] -> []
这也适用于有限列表.仅对于无限列表,Charles Stewart 的解决方案略短.
this also works for finite lists. For infinite lists only, Charles Stewart's solution is slightly shorter.
这篇关于如何在 Haskell 中获取无限列表的每个第 N 个元素?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文