4

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

那么,如果我有一个类似的序列:{0; 1; 2; 3; 4; 5},我如何获得从索引 2 到 4 的子序列?它看起来像{2; 3; 4}

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

4

2 回答 2

5

像这样的东西?

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

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

于 2012-05-06T03:30:18.057 回答
2
let slice n x xs =
    xs
    |> Seq.windowed (x + 1)
    |> Seq.nth n

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

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

于 2012-05-06T10:09:59.780 回答