Tengo String
como "1 2 3 4 5"
. ¿Cómo puedo convertirlo en una lista de enteros como [1,2,3,4,5]
en Haskell? ¿Qué sucede si la lista es "12345"
?Cómo convierto cadenas en listas de enteros en Haskell
Respuesta
Puede utilizar
Prelude> map read $ words "1 2 3 4 5" :: [Int]
[1,2,3,4,5]
Aquí se utiliza para dividir words
"1 2 3 4 5"
en los espacios en blanco para que podamos obtener ["1", "2", "3", "4", "5"]
. La función read
ahora puede convertir las cadenas individuales en enteros. Tiene el tipo Read a => String -> a
por lo que realmente se puede convertir a cualquier cosa en la clase de tipo Read
, y eso incluye Int
. Es debido a la variable de tipo en el tipo de devolución que necesitamos especificar el tipo anterior.
Para la cadena sin espacios, necesitamos convertir cada Char
en una lista de elementos individuales. Esto se puede hacer aplicando (:"")
a él - un String
es solo una lista de Char
s. A continuación, aplicamos read
de nuevo como antes:
Prelude> map (read . (:"")) "12345" :: [Int]
[1,2,3,4,5]
muchas gracias Martin ... u rock ... –
Hay una función definida en el módulo denominado Data.ChardigitToInt. Toma un carácter y devuelve un número, siempre que el personaje se pueda interpretar como un dígito hexadecimal.
Si desea utilizar esta función en su primer ejemplo, donde los números están separados por un espacio, deberá evitar los espacios. Puede hacerlo con un simple filtro
> map digitToInt $ filter (/=' ') "1 2 1 2 1 2 1"
[1,2,1,2,1,2,1]
El segundo ejemplo, donde los dígitos separados en los que no en todos, es aún más fácil, ya que no es necesario un filtro
> map digitToInt "1212121"
[1,2,1,2,1,2,1]
supongo digitToInt es mejor que lea porque no depende del tipo de expresión, lo que podría ser complicado (que a su vez es cómo encontré esta publicación = P). De todos modos, soy nuevo en Haskell así que podría estar equivocado =).
Se puede utilizar:
> [read [x] :: Int | x <- string]
- 1. convirtiendo la lista de cadenas en listas de números enteros
- 2. Convertir cadenas binarias en listas de enteros usando Python
- 3. Cómo convertir cadenas en enteros en Python?
- 4. listas Iglesia en Haskell
- 5. Mapeo de cadenas en enteros
- 6. Concatenación de listas en Haskell
- 7. Cómo comprimir varias listas en Haskell?
- 8. ¿Cómo convierto una lista en una tupla en Haskell?
- 9. interpolación de cadenas en Haskell
- 10. formato de cadenas en Haskell
- 11. ¿Puedo deshabilitar la impresión de listas de enteros pequeños como cadenas en el shell de Erlang?
- 12. Producto cartesiano de 2 listas en Haskell
- 13. Cierres y listas de comprensión en Haskell
- 14. La fusión de dos listas en Haskell
- 15. Cómo imprimir literales enteros en binario o hexadecimal en haskell?
- 16. Haskell - elementos alternados de dos listas
- 17. Parametrizar tipos por enteros en Haskell
- 18. Haskell: Listas vs Streams
- 19. Haskell - anidado listas vacías
- 20. ¿Cómo convierto cadenas entre mayúsculas y minúsculas en Java?
- 21. Jackson JSON convierte enteros en cadenas
- 22. cadenas enteros al analizar en Java
- 23. ¿Cómo convertir números de cadenas a enteros en una lista?
- 24. Casting de la lista de cadenas de listas de listas de ints en python
- 25. Prefijos de cadenas coincidentes en Haskell
- 26. Cadenas de memoria eficiente en Haskell
- 27. Implementación eficiente de cadenas en Haskell
- 28. Haskell: ¿Número de coincidencias entre dos listas de entradas?
- 29. Cómo encontrar patrones similares en listas/matrices de cadenas
- 30. ¿Cómo se implementan las listas en Haskell (GHC)?
-1, se puede añadir el código que ha intentado con? – Reddy