F#中列表的子列表

Feo*_*akt 2 f# linked-list list

如何获得子列表

[1]; [1; 2]; [1; 2; 3]; ...; [1; 2; 3; ...; n]
Run Code Online (Sandbox Code Playgroud)

从清单

[1; 2; 3; ...; n]
Run Code Online (Sandbox Code Playgroud)

以最惯用的方式?我所能做的就是:

List.scan (fun acc elem -> elem::acc) [] [1;2;3;4;5]
> val it : int list list =
    [[]; [1]; [2; 1]; [3; 2; 1]; [4; 3; 2; 1]; [5; 4; 3; 2; 1]]
Run Code Online (Sandbox Code Playgroud)

谢谢。

Foo*_*ole 5

您的实现很好。这是我的选择:

let source = [1..10]

let counts = [0..source.Length] // Or start at 1 if you don't want to start with an empty list

counts |> List.map (fun count -> source |> List.take count)
Run Code Online (Sandbox Code Playgroud)

  • OP的版本虽然更好 (2认同)