很简单,给定F#中的序列,如何从索引n到索引n + x(包括)获取元素?
所以,如果我有一个像{0; 1; 2; 3; 4; 5}
这样的序列,如何从索引2到4得到子序列?它看起来像{2; 3; 4}
任何使用大量内置F#API的答案都是可取的。
答案 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
也很好,也很了解。