Supongamos que tengo la siguiente lista de tuplas:Scala: Cómo convertir los elementos de tupla a listas
val tuples = listOfStrings.map(string => {
val split = string.split(":")
(split(0), split(1), split(2))
})
me gustaría obtener la fracción (0) en una lista, dividida (1) en otra lista y pronto. Una forma sencilla de esto podría lograrse es mediante la escritura:
list1 = tuples.map(x => x._1).toList
list2 = tuples.map(x => x._2).toList
list3 = tuples.map(x => x._3).toList
¿Hay una manera más elegante (funcional) de lograr lo anterior sin necesidad de escribir 3 declaraciones por separado?
demasiado lento :) estaba a punto de publicar: 'tuples.map {t => t._1 :: :: t._2 t._3 :: Nil} .transpose' nice one. +1 –
Mala idea, debería usar descomprimir de la otra respuesta: http://stackoverflow.com/a/17281359/53974 – Blaisorblade
@Balisorblade: Tengo que estar en desacuerdo. Esto sería cierto si fuera un 'Tuple2', pero es un' Tuple3'. 'unzip' solo maneja pares de descompresión, y el propio ejemplo de jeshan muestra una lista de' Tuple3', no 'Tuple2'. –