OK, wygląda na to, że powinno być łatwo, ale po prostu nie rozumiem. Jeśli mam ciąg liczb, w jaki sposób mogę wygenerować nową sekwencję złożoną z działających liczb całkowitych? np. dla sekwencji [1; 2; 3; 4], chcę odwzorować ją na [1; 3; 6; 10]. W odpowiednio funkcjonalny sposób.f # sekwencja bieżącej sumy
5
A
Odpowiedz
14
5
> Seq.scan (fun acc n -> acc + n) 0 [1;2;3;4];;
val it : seq<int> = seq [0; 1; 3; 6; ...]
Z list:
> [1;2;3;4] |> List.scan (fun acc n -> acc + n) 0 |> List.tail;;
val it : int list = [1; 3; 6; 10]
Edit: Innym sposobem z sekwencji:
let sum s = seq {
let x = ref 0
for i in s do
x := !x + i
yield !x
}
Tak, istnieje zmienna zmienny, ale uważam, że bardziej czytelny (jeśli chcesz dostać pozbądź się wiodącego 0).
+0
fajnie, dziękuję. Wydaje się jednak, że generuje większą sekwencję, z początkowym 0, nie wydaje się prawdziwą mapą. – Aidan
0
Nie wiem, to jest najlepszy sposób, ale powinien on rade
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
Kolejna wariacja użyciu Seq.scan
(Seq.skip 1
pozbywa się prowadzenia zero):
> {1..4} |> Seq.scan (+) 0 |> Seq.skip 1;;
val it : seq<int> = seq [1; 3; 6; 10]
Powiązane problemy
- 1. Jak mogę sprawdzić, czy sekwencja jest pusta w F #?
- 2. Niepoprawna sekwencja escape (poprawne to \ b \ t \ n \ f \ r \ "\ '\\)
- 3. Python Pandy warunkowe Sumy
- 4. Sekwencja ze strumieniami w Scali
- 5. obliczanie sumy z PHPExcel
- 6. Powracając N-ty numer Fibonacciego sekwencja?
- 7. Sekwencja działań WiX
- 8. Sekwencja JavaScript Promise
- 9. Sekwencja animacji Androida
- 10. j Sekwencja wątku
- 11. Immutable.js - leniwa sekwencja
- 12. xsd - sekwencja vs wyboru
- 13. Sekwencja nie zawiera elementów
- 14. Sekwencja nie zawiera elementów?
- 15. Pusta sekwencja w LINQ
- 16. rosnąca sekwencja malejąca
- 17. Powtarzanie powtarzana sekwencja
- 18. Niemożliwa sekwencja zdarzeń
- 19. Sekwencja PostgreSQL po Serial
- 20. MongoDB Aggregation: Compute bieganie Sumy od sumy poprzednich wierszach
- 21. Używanie jquery do uzyskania sumy wierszy i sumy całkowitej tabeli
- 22. SQL problem - obliczyć max dni sekwencja
- 23. HighCharts usuń sumy stacków
- 24. części sumy numpy.array
- 25. Sumy wartości 2 wektorów
- 26. Obliczanie sumy kontrolnej NMEA
- 27. sumy wyliczonej kolumnie foreach
- 28. F # pętli w F #
- 29. powtarzalne sekwencje F #
- 30. Google Maps API: Współrzędne bieżącej lokalizacji iOS
To jest bardzo fajne, jednak miałem nadzieję, że zrobię to dla Sekwencji, a nie dla listy. – Aidan
@Aidan: Edytowano w celu dodania właściwej implementacji Seq.scan. – ildjarn
Fajnie, to ten. Dziękuję Ci. – Aidan