2
什麼是最乾淨的&在F#中創建這個「化合物」列表的最簡單方法是什麼?FSharp化合物列表
輸入:
[ 1; 2; 3; 4; 5 ]
所需的輸出:
[ [1]; [1;2]; [1;2;3]; [1,2,3,4]; [1;2;3;4;5] ]
什麼是最乾淨的&在F#中創建這個「化合物」列表的最簡單方法是什麼?FSharp化合物列表
輸入:
[ 1; 2; 3; 4; 5 ]
所需的輸出:
[ [1]; [1;2]; [1;2;3]; [1,2,3,4]; [1;2;3;4;5] ]
的方法有很多,但我認爲這是一個乾淨的:
[1;2;3;4;5]
|> List.scan (fun x y -> x @ [y]) []
|> List.tail
使用List.scan
最後List.tail
省略第一個元素是一個空列表。
這裏的另一種方式嚴格解釋的內容作爲整數和使用列表理解:
[1; 2; 3; 4; 5] |> List.map(fun n -> [ for i = 1 to n do yield i ])
,你會得到相同的輸出上面,但如果你輸入的是:
[2; 1; 2] |> List.map(fun n -> [ for i = 1 to n do yield i ])
你得到:
[[1; 2]; [1]; [1; 2]]
這可能是也可能不是你想要的。