在fsharp中以序列中的n到n + x获取元素

时间:2012-05-06 03:18:25

标签: f# sequences

很简单,给定F#中的序列,如何从索引n到索引n + x(包括)获取元素?

所以,如果我有一个像{0; 1; 2; 3; 4; 5}这样的序列,如何从索引2到4得到子序列?它看起来像{2; 3; 4}

任何使用大量内置F#API的答案都是可取的。

2 个答案:

答案 0 :(得分:5)

这样的东西?

let slice n x = Seq.skip n >> Seq.take (x+1)

请注意,如果序列中没有足够的元素,您将获得InvalidOperationException

答案 1 :(得分:2)

let slice n x xs =
    xs
    |> Seq.windowed (x + 1)
    |> Seq.nth n

请注意,与Yacoder的答案不同,它会返回一个数组而不是一个序列(可能需要或不需要,具体取决于具体情况)。

我添加了我的回答show Seq.windowed,这是一个非常有用的功能恕我直言。 Seq.pairwise也很好,也很了解。