2015-12-05 28 views
1

我试图截断这个序列,例如你可以在F#如何获得一个子列表或F#子序列

let sublist sequ (i:int) (n:int) = 
    let item = Seq.item(n-i) sequ 
    let start = Seq.item i sequ 
    let ending = Seq.item n sequ 
    Seq.truncate(item) (seq{start..ending}) 

sublist [|25..92|] 5 10 

阵列做喜欢的话可以在这里完成

Array.sub [|5..20|] 3 10 
+3

这就是你'之后? http://stackoverflow.com/questions/34093543/f-take-subsequence-of-a-sequence – Foole

+0

是的,这也可以,但我不明白>> 的含义,但是谢谢 –

+1

@TheWololo'>>'和'<<'是函数组合操作符。他们避免了为第一个函数提供一个显式参数的需求,然后将其传递给第二个函数。他们可以使用它们定义的函数更简洁一点。看到这个答案的更多信息:http://stackoverflow.com/a/1904063/5438433 – TheInnerLight

回答

2

你忘了编写预期结果。

您可以在链接的答案在评论中使用takeskip为:

let sublist sequ (i:int) (n:int) = 
    sequ |> Seq.skip i |> Seq.take (n-1) 

请注意,如果你正在处理数组可以使用数组切片:

[|25..92|].[5..10] 
> 
val it : int [] = [|30; 31; 32; 33; 34; 35|] 

[|5..20|].[3..10] 
> 
val it : int [] = [|8; 9; 10; 11; 12; 13; 14; 15|] 
+0

这将看起来像完全一样吗? –

+0

@TheWololo查看更新。 – Gustavo

+0

感谢队友,这真的帮了我很多 –

相关问题