好吧,這看起來應該很容易,但我只是沒有得到它。如果我有一系列數字,我如何生成一個由運行總數組成的新序列?例如對於序列[1; 2; 3; 4],我想將它映射到[1; 3; 6; 10]。以適當的功能方式。f#運行總數
Q
f#運行總數
5
A
回答
14
5
> Seq.scan (fun acc n -> acc + n) 0 [1;2;3;4];;
val it : seq<int> = seq [0; 1; 3; 6; ...]
隨着名單:
> [1;2;3;4] |> List.scan (fun acc n -> acc + n) 0 |> List.tail;;
val it : int list = [1; 3; 6; 10]
編輯:另一種方式與序列:
let sum s = seq {
let x = ref 0
for i in s do
x := !x + i
yield !x
}
是的,有一個可變的變量,但我覺得它更具可讀性(如果你想獲得擺脫領先的0)。
+0
很酷,謝謝。然而,它似乎產生了一個更大的序列,初始值爲0,它是否不像真實的地圖。 – Aidan 2011-03-29 21:27:41
0
不知道這是最好的方式,但它應該使用Seq.scan
做的伎倆
let input = [1; 2; 3; 4]
let runningTotal =
(input, 0)
|> Seq.unfold (fun (list, total) ->
match list with
| [] ->
None
| h::t ->
let total = total + h
total, (t, total) |> Some)
|> List.ofSeq
13
相關問題
- 1. 運行遞歸F#
- 2. 運行F#測試
- 3. F#如何防止運行Console.Readline()函數
- 4. 計算運行總數
- 5. gridcomplete函數總是運行?
- 6. 計算運行總數
- 7. RDLC計算運行總數?
- 8. F#ionide websharperserverclient - 如何運行
- 9. F#運行NUnit測試
- 10. TSQL - 運行總
- 11. 運行總計
- 12. 通過ID運行總計行數
- 13. MSTest F# - 並行運行測試
- 14. SQL運行總數從一個計數
- 15. 運行各種參數的總數
- 16. F#數組總和不能打印
- 17. 添加行,運行計數,運行總和以查詢結果
- 18. TSQL運行總和
- 19. ListView運行總計
- 20. 運行總計Sybase
- 21. SQL運行總計
- 22. 效益運行的命令行PHP與參數「-f」
- 23. DAX - 運行總數 - 多個Critiera +分組
- 24. 如何分解運行總數?
- 25. 計算Linq中的運行總數
- 26. 在asp.net Gridview中計算運行總數
- 27. 使用計算器的運行總數
- 28. SQL運行總數分組極限
- 29. 多個度量的運行總數
- 30. 運行總數與否定字段
這是非常酷的,但我希望做一個序列而不是一個列表。 – Aidan 2011-03-29 21:33:10
@Aidan:編輯添加適當的Seq.scan實現。 – ildjarn 2011-03-29 21:37:35
很酷,就是那個。謝謝。 – Aidan 2011-03-29 21:47:37