Ok, parece que debería ser fácil, pero simplemente no lo estoy obteniendo. Si tengo una secuencia de números, ¿cómo puedo generar una nueva secuencia compuesta por los totales acumulados? por ejemplo, para una secuencia [1; 2; 3; 4], quiero asignarla a [1; 3; 6; 10]. De una manera adecuada y funcional.f # secuencia de ejecución total
5
A
Respuesta
14
5
> Seq.scan (fun acc n -> acc + n) 0 [1;2;3;4];;
val it : seq<int> = seq [0; 1; 3; 6; ...]
Con las listas:
> [1;2;3;4] |> List.scan (fun acc n -> acc + n) 0 |> List.tail;;
val it : int list = [1; 3; 6; 10]
Editar: Otra forma de secuencias:
let sum s = seq {
let x = ref 0
for i in s do
x := !x + i
yield !x
}
Sí, hay una variable mutable, pero me resulta más fácil de leer (si desea obtener deshacerse del líder 0).
+0
genial, gracias. Sin embargo, parece generar una secuencia más grande, con un 0 inicial, no se siente como un mapa verdadero. – Aidan
0
No estoy seguro es la mejor manera pero debe hacer el truco
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
Otra variación utilizando Seq.scan
(Seq.skip 1
se deshace del líder cero):
> {1..4} |> Seq.scan (+) 0 |> Seq.skip 1;;
val it : seq<int> = seq [1; 3; 6; 10]
Cuestiones relacionadas
- 1. F # array_chunk para la secuencia
- 2. F #: ¿Cómo dividir una secuencia en una secuencia de secuencias
- 3. F # genera una secuencia/matriz de fechas
- 4. F # usando secuencia de caché correctamente
- 5. F # Agregar un elemento a una secuencia
- 6. Informes de Crystal: resumen vs. campo total en ejecución
- 7. Herencia jerarquía: constructor y destructor secuencia de ejecución
- 8. Total de grupos en F #: fácil con secuencias, ¿es posible con listas?
- 9. Optimización de la manipulación de la secuencia F #
- 10. Secuencia de escape \ f - feed de formulario - ¿qué es exactamente?
- 11. Coerción en tiempo de ejecución de tipos genéricos en F #
- 12. ¿Cómo puedo comprobar si una secuencia está vacía en F #?
- 13. (pero no de ejecución) una secuencia de comandos de Python
- 14. Ejecución de una secuencia de comandos groovy en eclipse
- 15. Patrón de comando: ejecución de varios comandos en secuencia
- 16. secuencia de comandos bash para comprobar el proceso en ejecución
- 17. ¿cómo detengo la ejecución en una secuencia de comandos python?
- 18. cómo detener una secuencia de comandos en ejecución en Matlab
- 19. Rejilla de selenio con secuencia secuencial + ejecución en paralelo
- 20. F # - Mantener F # interactivo de publicar salida
- 21. f # compilando demasiado lento
- 22. Necesita algo de Wizard de tSQL: Actualización SQL basada en Total de ejecución
- 23. ¿Número total de publicaciones?
- 24. Ejecución simultánea del kernel CUDA con múltiples núcleos por secuencia
- 25. ejecución de la matriz de ejecución haskell
- 26. FirstOrDefault En F #
- 27. Obtener el número total de elementos enum
- 28. es i = f(); definido cuando f modifica i?
- 29. Tareas de TI: secuencia de comandos F # frente al script de Powershell
- 30. Configuración de ExitCode en la secuencia de comandos F # alojada automáticamente
Esto es genial, sin embargo, esperaba hacer esto para una secuencia en lugar de una lista. – Aidan
@Aidan: editado para agregar la implementación apropiada de Seq.scan. – ildjarn
Genial, ese es el indicado. Gracias. – Aidan