Estoy tratando de dividir la lista de Scala como List(1,2,3,4)
en pares (1,2) (2,3) (3,4)
, ¿cuál es una manera simple de hacer esto?¿Cómo se convierte una lista de Scala en pares?
Respuesta
val xs = List(1,2,3,4)
xs zip xs.tail
// res1: List[(Int, Int)] = List((1,2), (2,3), (3,4))
Como dicen los docs, zip
Devuelve una lista formada a partir de esta lista y otra colección iterable combinando elementos correspondientes en pares. Si una de las dos colecciones es más larga que la otra, sus elementos restantes son ignorados.
Así List('a,'b,'c,'d)
cremallera con List('x,'y,'z)
es List(('a,'x), ('b,'y), ('c,'z))
con la final 'd
de la primera ignorado.
De su ejemplo, el tail
de List(1,2,3,4)
es List(2,3,4)
para que pueda ver cómo se comprimen juntos en pares.
para producir una lista de pares (es decir tuplas) probar este
List(1,2,3,4,5).sliding(2).collect{case List(a,b) => (a,b)}.toList
Use 'map' en lugar de' collect' - esto ahorrará una llamada 'isDefinedAt' y lanzar una excepción si no todos, de repente, su colección original es un' list' más, en lugar de producir un silencio resultado vacío Por esta misma razón, probablemente debería emparejar el patrón 'Seq (a, b)' en lugar de 'List (a, b)'. –
List(1,2,3,4).sliding(2).map(x => (x.head, x.tail.head)).toList
res0: List[(Int, Int)] = List((1,2), (2,3), (3,4))
Esta es la respuesta que surgió también cuando lo escribí. Parece más obvio y legible que el resto. – arviman
@arviman Esto es lo que se me ocurrió en ese momento. Probablemente estaba tratando de forzar el uso de 'deslizamiento'. En retrospectiva, la respuesta aceptada es mucho mejor. – Brian
- 1. ¿Cómo se convierte una lista de números en un mapa?
- 2. pares números una lista?
- 3. Componer una lista de todos los pares
- 4. Crear una lista de pares en java
- 5. ¿Cómo se define una lista de listas en Scala?
- 6. ¿Cómo se convierte una java.util.Collections.unmodifiableMap en un mapa inamovible de Scala?
- 7. Serializando una lista de pares clave/valor en XML
- 8. Generar una lista de los números pares en Python
- 9. Python - Convierte una cadena a la lista
- 10. ¿Cómo se convierte una fracción a binaria?
- 11. Mysql se convierte en '?
- 12. Repetición de una lista en Scala
- 13. Desembalaje una lista/tupla de pares en dos listas/tuplas
- 14. Scala - convertir Lista de listas en una sola Lista: Lista [Lista [A]] en Lista [A]
- 15. ¿Cómo se convierte una cadena en booleana en ActionScript?
- 16. Unir pares de elementos de una lista - Python
- 17. elementos postales con índices impares y pares en una lista
- 18. ¿Cómo puedo iterar una lista de listas en Scala?
- 19. ¿Lista ordenada de pares de valores clave?
- 20. Lista de pares de palabras idiomáticas
- 21. ¿Es mejor usar una lista de pares o dos listas?
- 22. ¿Cómo se convierte SYS_GUID() en varchar?
- 23. ¿Cómo se define una @interface en Scala?
- 24. recorrido por pares de una lista o tupla
- 25. ¿Cómo obtener una lista de pares de valores clave en un objeto?
- 26. ¿C++ se convierte en MSIL?
- 27. ¿Convierte la lista de flotantes en el búfer en Python?
- 28. Flujo acotado recursivo de cola de pares de enteros (Scala)?
- 29. ¿Cómo se convierte una cadena de C++ a un int?
- 30. En .Net, ¿cómo se convierte una ArrayList en una lista genérica fuertemente tipada sin utilizar un foreach?
Esto es corto e inteligente, pero es más difícil de entender, creo. –
Esta sería mi primera opción por concisión y claridad. Tener un voto favorable. – Brian
@Luigi: Volví a subir esta respuesta y la prefiero a la actualmente aceptada, pero una explicación sería más útil que "jaja si crees que es difícil de entender". –