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の回答とは異なり、シーケンスではなく配列を返すことに注意してください(状況に応じて、必要な場合とそうでない場合があります)。

Seq.windowed非常に便利な関数 IMHO であるshow に回答を追加しました。Seq.pairwiseまた、知っておくと便利です。

于 2012-05-06T10:09:59.780 に答える